001package gudusoft.gsqlparser.catalog.runtime;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.catalog.diagnostic.CatalogDiagnostic;
005
006import java.util.List;
007import java.util.Optional;
008
009/**
010 * Immutable point-in-time view of catalog metadata.
011 *
012 * <p>Plan §7.2 / §10.5. Stable per analysis run; {@code provider.refresh(...)} produces a
013 * <em>new</em> snapshot rather than mutating this one.</p>
014 *
015 * <p>Phase 1A skeleton — implementations land in P1B (T1B.5, T1B.7).</p>
016 */
017public interface CatalogSnapshot {
018
019    EDbVendor vendor();
020
021    Optional<CatalogEntry> find(CatalogQualifiedName name, CatalogObjectKind kind);
022
023    List<CatalogEntry> children(CatalogObjectId parent, CatalogObjectKind kind);
024
025    List<CatalogDiagnostic> diagnostics();
026
027    long materializedAtMillis();
028}