Coverage for python/lsst/daf/butler/registries/oracleRegistry.py : 82%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
# This file is part of daf_butler. # # Developed for the LSST Data Management System. # This product includes software developed by the LSST Project # (http://www.lsst.org). # See the COPYRIGHT file at the top-level directory of this distribution # for details of code ownership. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>.
def _merge(merge, compiler, **kw): """Generate MERGE query for inserting or updating records. """
# To properly support type decorators defined in core/schema.py we need # to pass column type to `bindparam`.
*[tableAlias.columns[col] == selectAlias.columns[col] for col in pkColumns] )
f"\nUSING {selectAliasText}" \ f"\nON ({conditionText})" raise ValueError(f"Unexpected `onConflict` value: {merge.onConflict}")
"""Registry backed by a Oracle database.
Parameters ---------- config : `SqlRegistryConfig` or `str` Load configuration """
"""Set any filesystem-dependent config options for this Registry to be appropriate for a new empty repository with the given root.
Parameters ---------- root : `str` Filesystem path to the root of the data repository. config : `Config` A Butler-level config object to update (but not a `ButlerConfig`, to avoid included expanded defaults). full : `ButlerConfig` A complete Butler config with all defaults expanded; repository-specific options that should not be obtained from defaults when Butler instances are constructed should be copied from ``full`` to ``config``. overwrite : `bool`, optional If `False`, do not modify a value in ``config`` if the value already exists. Default is always to overwrite with the provided ``root``.
Notes ----- If a keyword is explicitly defined in the supplied ``config`` it will not be overridden by this method if ``overwrite`` is `False`. This allows explicit values set in external configs to be retained. """ super().setConfigRoot(root, config, full, overwrite=overwrite) Config.updateParameters(RegistryConfig, config, full, toCopy=("db",), overwrite=overwrite)
butlerRoot=None): registryConfig = SqlRegistryConfig(registryConfig) self.schemaConfig = schemaConfig super().__init__(registryConfig, schemaConfig, dimensionConfig, create, butlerRoot=butlerRoot)
engine = create_engine(self.config.connectionString, pool_size=1) conn = engine.connect() # Work around SQLAlchemy assuming that the Oracle limit on identifier # names is even short than it is after 12.2. oracle_ver = engine.dialect._get_server_version_info(conn) engine.dialect.max_identifier_length = 128 if oracle_ver >= (12, 2) else 30 conn.close() return engine
# Docstring inherited from SqlRegistry._makeInsertWithConflict. return _Merge(table, onConflict) |