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) 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) 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" )
const ( TableType = "TABLE" ViewType = "VIEW" )
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.
func (*Catalog) CatalogType ¶
func (*Catalog) CheckNamespaceExists ¶
func (*Catalog) CheckTableExists ¶
func (*Catalog) CheckViewExists ¶
CheckViewExists returns true if a view exists in the catalog.
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) 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" )