GlobalCatalogStore

Where the type catalogs live: one per database - the servers it is reached on and its name - for the whole JVM.

In standard JDBC environments, connection pools (like HikariCP) use URLs to identify different databases. Keying on the database itself rather than on the URL is what keeps the parts that do not affect the catalog - credentials, SSL settings, timeouts - from fragmenting it, so every session against one database reads the same types and the same registrations however it was configured to get there.

Functions

Link copied to clipboard
internal fun ensureLoaded(key: DatabaseKey, holder: CatalogHolder, executor: QueryExecutor)

Ensures that the database's types have been read into holder, the catalog a connection to it reads. This method is internal to the driver.

Link copied to clipboard
internal fun holderFor(key: DatabaseKey): CatalogHolder

Retrieves or creates the catalog holder for the specified database. This method is internal to the driver.

Link copied to clipboard
internal fun reload(key: DatabaseKey, holder: CatalogHolder, executor: QueryExecutor)

Explicitly re-reads the database's types into holder, the catalog the session asking for it reads. This is internally invoked by driver connection mechanisms when a schema refresh is requested.

Link copied to clipboard

Drops a database's catalog to prevent memory leaks if a connection (pool) pointing to dynamic URLs is closed.