Documentation
¶
Index ¶
- Constants
- type Catalog
- func (c *Catalog) CatalogType() catalog.Type
- func (c *Catalog) CheckNamespaceExists(ctx context.Context, namespace table.Identifier) (bool, error)
- func (c *Catalog) CheckTableExists(ctx context.Context, identifier table.Identifier) (bool, error)
- func (c *Catalog) CheckViewExists(ctx context.Context, identifier table.Identifier) (bool, error)
- func (c *Catalog) Close() error
- func (c *Catalog) CommitTable(ctx context.Context, ident table.Identifier, reqs []table.Requirement, ...) (table.Metadata, string, error)
- func (c *Catalog) CreateNamespace(ctx context.Context, namespace table.Identifier, props iceberg.Properties) error
- func (c *Catalog) CreateSQLTables(ctx context.Context) error
- func (c *Catalog) CreateTable(ctx context.Context, ident table.Identifier, sc *iceberg.Schema, ...) (*table.Table, error)
- func (c *Catalog) CreateView(ctx context.Context, identifier table.Identifier, schema *iceberg.Schema, ...) error
- func (c *Catalog) DropNamespace(ctx context.Context, namespace table.Identifier) error
- func (c *Catalog) DropSQLTables(ctx context.Context) error
- func (c *Catalog) DropTable(ctx context.Context, identifier table.Identifier) error
- func (c *Catalog) DropView(ctx context.Context, identifier table.Identifier) error
- func (c *Catalog) ListNamespaces(ctx context.Context, parent table.Identifier) ([]table.Identifier, error)
- func (c *Catalog) ListTables(ctx context.Context, namespace table.Identifier) iter.Seq2[table.Identifier, error]
- func (c *Catalog) ListViews(ctx context.Context, namespace table.Identifier) iter.Seq2[table.Identifier, error]
- func (c *Catalog) LoadNamespaceProperties(ctx context.Context, namespace table.Identifier) (iceberg.Properties, error)
- func (c *Catalog) LoadTable(ctx context.Context, identifier table.Identifier) (*table.Table, error)
- func (c *Catalog) LoadView(ctx context.Context, identifier table.Identifier) (view.Metadata, error)
- func (c *Catalog) Name() string
- func (c *Catalog) PurgeTable(ctx context.Context, identifier table.Identifier) error
- func (c *Catalog) RenameTable(ctx context.Context, from, to table.Identifier) (*table.Table, error)
- func (c *Catalog) UpdateNamespaceProperties(ctx context.Context, namespace table.Identifier, removals []string, ...) (catalog.PropertiesUpdateSummary, error)
- type SupportedDialect
Constants ¶
const ( DialectKey = "sql.dialect" DriverKey = "sql.driver" // SchemaVersionKey opts in to migrating a legacy V0 catalog (one that lacks // the iceberg_type column) up to the V1 schema. // // When set to SchemaVersionV1 the catalog issues the one-way ALTER TABLE // that adds the iceberg_type column; otherwise it stays on V0 and emits // column-free queries that never reference iceberg_type. SchemaVersionKey = "jdbc.schema-version" )
const ( TableType = "TABLE" ViewType = "VIEW" )
const (
SchemaVersionV1 = "V1"
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Catalog ¶
type Catalog struct {
// contains filtered or unexported fields
}
func NewCatalog ¶
func NewCatalog(name string, db *sql.DB, dialect SupportedDialect, props iceberg.Properties) (*Catalog, error)
NewCatalog creates a new sql-based catalog using the provided sql.DB handle to perform any queries.
The dialect parameter determines the SQL dialect to use for query generation and must be one of the supported dialects, i.e. one of the exported SupportedDialect values. The separation here allows for the use of different drivers/databases provided they support the chosen sql dialect (e.g. if a particular database supports the MySQL dialect, then the database can still be used with this catalog even though it's not explicitly implemented).
If the "init_catalog_tables" property is set to "true", then creating the catalog will also attempt to to verify whether the necessary tables (iceberg_tables and iceberg_namespace_properties) exist, creating them if they do not already exist.
The environment variable ICEBERG_SQL_DEBUG can be set to automatically log the sql queries to the terminal: - ICEBERG_SQL_DEBUG=1 logs only failed queries - ICEBERG_SQL_DEBUG=2 logs all queries
All interactions with the db are performed within transactions to ensure atomicity and transactional isolation of catalog changes.
SQLite callers that allow concurrent writers should configure WAL and a busy timeout in the driver DSN so the settings apply to every pooled connection. NewCatalog does not mutate connection settings on the caller-owned db.
func (*Catalog) CatalogType ¶
func (*Catalog) CheckNamespaceExists ¶
func (*Catalog) CheckTableExists ¶
CheckTableExists reports whether the identifier has a table row in the catalog. It does not validate that the referenced metadata file is readable.
func (*Catalog) CheckViewExists ¶
CheckViewExists returns true if a view exists in the catalog.
func (*Catalog) Close ¶
Close releases the catalog's metrics reporter. When the catalog opened its own database handle (the registry catalog.Load path), Close also closes that handle's connection pool; a handle supplied to NewCatalog stays owned by the caller and is left open. Callers holding a catalog.Catalog can reach this via a catalog.Closer type assertion.
func (*Catalog) CommitTable ¶
func (*Catalog) CreateNamespace ¶
func (c *Catalog) CreateNamespace(ctx context.Context, namespace table.Identifier, props iceberg.Properties) error
func (*Catalog) CreateTable ¶
func (*Catalog) CreateView ¶
func (c *Catalog) CreateView(ctx context.Context, identifier table.Identifier, schema *iceberg.Schema, viewSQL string, props iceberg.Properties) error
CreateView creates a new view in the catalog.
func (*Catalog) DropNamespace ¶
func (*Catalog) ListNamespaces ¶
func (c *Catalog) ListNamespaces(ctx context.Context, parent table.Identifier) ([]table.Identifier, error)
func (*Catalog) ListTables ¶
func (c *Catalog) ListTables(ctx context.Context, namespace table.Identifier) iter.Seq2[table.Identifier, error]
func (*Catalog) ListViews ¶
func (c *Catalog) ListViews(ctx context.Context, namespace table.Identifier) iter.Seq2[table.Identifier, error]
ListViews returns a list of view identifiers in the catalog.
func (*Catalog) LoadNamespaceProperties ¶
func (c *Catalog) LoadNamespaceProperties(ctx context.Context, namespace table.Identifier) (iceberg.Properties, error)
func (*Catalog) PurgeTable ¶
func (*Catalog) RenameTable ¶
func (*Catalog) UpdateNamespaceProperties ¶
func (c *Catalog) UpdateNamespaceProperties(ctx context.Context, namespace table.Identifier, removals []string, updates iceberg.Properties) (catalog.PropertiesUpdateSummary, error)
type SupportedDialect ¶
type SupportedDialect string
const ( Postgres SupportedDialect = "postgres" MySQL SupportedDialect = "mysql" SQLite SupportedDialect = "sqlite" MSSQL SupportedDialect = "mssql" Oracle SupportedDialect = "oracle" )