public final class InMemoryCatalogSnapshot extends Object implements CatalogSnapshot
CatalogSnapshot backed by Map<String, CatalogEntry>s keyed via
CatalogIdentifierPolicy.keyForMap(CatalogQualifiedName).
Plan §6 / §7.2. The fast path is the kind-segregated keyForMap lookup; on a miss for
COLLATION_BASED dialects (MSSQL with case-insensitive collation, MySQL
lower_case_table_names=2) the snapshot falls back to a linear scan via
CatalogIdentifierPolicy.areEqual(gudusoft.gsqlparser.catalog.runtime.CatalogQualifiedName, gudusoft.gsqlparser.catalog.runtime.CatalogQualifiedName) — same contract as
IdentifierService.canUseCompositeKey.
Construction goes through builder(); the snapshot is immutable once built.
Children are precomputed at build time so children(CatalogObjectId, CatalogObjectKind)
does not walk every entry.
| Modifier and Type | Class and Description |
|---|---|
static class |
InMemoryCatalogSnapshot.Builder |
| Modifier and Type | Method and Description |
|---|---|
static InMemoryCatalogSnapshot.Builder |
builder() |
List<CatalogEntry> |
children(CatalogObjectId parent,
CatalogObjectKind kind) |
List<CatalogDiagnostic> |
diagnostics() |
Optional<CatalogEntry> |
find(CatalogQualifiedName name,
CatalogObjectKind kind) |
long |
materializedAtMillis() |
int |
size()
Total entry count across all kinds.
|
EDbVendor |
vendor() |
public static InMemoryCatalogSnapshot.Builder builder()
public EDbVendor vendor()
vendor in interface CatalogSnapshotpublic Optional<CatalogEntry> find(CatalogQualifiedName name, CatalogObjectKind kind)
find in interface CatalogSnapshotpublic List<CatalogEntry> children(CatalogObjectId parent, CatalogObjectKind kind)
children in interface CatalogSnapshotpublic List<CatalogDiagnostic> diagnostics()
diagnostics in interface CatalogSnapshotpublic long materializedAtMillis()
materializedAtMillis in interface CatalogSnapshotpublic int size()