Documentation
¶
Overview ¶
Copyright 2024-2025 ApeCloud, Ltd.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Index ¶
- Constants
- Variables
- func ConnectIdentifiersANSI(identifiers ...string) string
- func DecodeCreateindex(createIndexSQL string) ([]string, error)
- func DecodeIndexName(encodedName string) (string, string)
- func EncodeIndexName(table, index string) string
- func FullColumnName(catalog, schema, table, column string) string
- func FullIndexName(catalog, schema, index string) string
- func FullSchemaName(catalog, schema string) string
- func FullTableName(catalog, schema, table string) string
- func IsDuckDBCatalogError(err error) bool
- func IsDuckDBIndexAlreadyExistsError(err error) bool
- func IsDuckDBNotNullConstraintViolationError(err error) (bool, string)
- func IsDuckDBSetSchemaNotFoundError(err error) bool
- func IsDuckDBTableAlreadyExistsError(err error) bool
- func IsDuckDBTableNotFoundError(err error) bool
- func IsDuckDBUniqueConstraintViolationError(err error) bool
- func IsDuckDBViewNotFoundError(err error) bool
- func IsSensitiveSQL(query string) bool
- func IsSystemView(viewName string) bool
- func QuoteIdentifierANSI(identifier string) string
- func RedactSensitiveSQL(query string) string
- func RejectSensitiveSQL(query string) error
- func VerifyDuckLakeExtensions(extensionDir string, manifest []ExtensionArtifact) error
- func VerifyDuckLakeExtensionsForTarget(extensionDir string, manifest []ExtensionArtifact, goos, goarch string) error
- type AnnotatedDuckType
- type ColumnInfo
- type Comment
- type ConnectionPool
- func (p *ConnectionPool) Close() error
- func (p *ConnectionPool) CloseConn(id uint32) error
- func (p *ConnectionPool) CloseTxn(id uint32)
- func (p *ConnectionPool) Connector() *duckdb.Connector
- func (p *ConnectionPool) CurrentCatalog(id uint32) string
- func (p *ConnectionPool) CurrentSchema(id uint32) string
- func (p *ConnectionPool) GetConn(ctx context.Context, id uint32) (*stdsql.Conn, error)
- func (p *ConnectionPool) GetConnForSchema(ctx context.Context, id uint32, schemaName string) (*stdsql.Conn, error)
- func (p *ConnectionPool) GetTxn(ctx context.Context, id uint32, schemaName string, options *stdsql.TxOptions) (*stdsql.Tx, error)
- func (p *ConnectionPool) Reset(connector *duckdb.Connector, db *stdsql.DB) error
- func (p *ConnectionPool) SetConnectionInitializer(initializer func(context.Context, *stdsql.Conn) error)
- func (p *ConnectionPool) TryGetTxn(id uint32) *stdsql.Tx
- type Database
- func (d *Database) AllViews(ctx *sql.Context) ([]sql.ViewDefinition, error)
- func (d *Database) CopyTableData(ctx *sql.Context, sourceTable string, destinationTable string) (uint64, error)
- func (d *Database) CreateTable(ctx *sql.Context, name string, schema sql.PrimaryKeySchema, ...) error
- func (d *Database) CreateTemporaryTable(ctx *sql.Context, name string, schema sql.PrimaryKeySchema, ...) error
- func (d *Database) CreateTrigger(ctx *sql.Context, definition sql.TriggerDefinition) error
- func (d *Database) CreateView(ctx *sql.Context, name string, selectStatement string, createViewStmt string) error
- func (d *Database) DropStoredProcedure(ctx *sql.Context, name string) error
- func (d *Database) DropTable(ctx *sql.Context, name string) error
- func (d *Database) DropTrigger(ctx *sql.Context, name string) error
- func (d *Database) DropView(ctx *sql.Context, name string) error
- func (d *Database) GetCollation(ctx *sql.Context) sql.CollationID
- func (d *Database) GetStoredProcedure(ctx *sql.Context, name string) (sql.StoredProcedureDetails, bool, error)
- func (d *Database) GetStoredProcedures(ctx *sql.Context) ([]sql.StoredProcedureDetails, error)
- func (d *Database) GetTableInsensitive(ctx *sql.Context, tblName string) (sql.Table, bool, error)
- func (d *Database) GetTableNames(ctx *sql.Context) ([]string, error)
- func (d *Database) GetTriggers(ctx *sql.Context) ([]sql.TriggerDefinition, error)
- func (d *Database) GetViewDefinition(ctx *sql.Context, viewName string) (sql.ViewDefinition, bool, error)
- func (d *Database) Name() string
- func (d *Database) RenameTable(ctx *sql.Context, oldName string, newName string) error
- func (d *Database) SaveStoredProcedure(ctx *sql.Context, spd sql.StoredProcedureDetails) error
- func (d *Database) SetCollation(ctx *sql.Context, collation sql.CollationID) error
- type DatabaseProvider
- func (prov *DatabaseProvider) AllDatabases(ctx *sql.Context) []sql.Database
- func (prov *DatabaseProvider) AttachCatalog(file interface{ ... }, ignoreNonDB bool) error
- func (prov *DatabaseProvider) Close() error
- func (prov *DatabaseProvider) Connector() *duckdb.Connector
- func (prov *DatabaseProvider) CreateCatalog(name string, ifNotExists bool) error
- func (prov *DatabaseProvider) CreateDatabase(ctx *sql.Context, name string) error
- func (prov *DatabaseProvider) DataDir() string
- func (prov *DatabaseProvider) Database(ctx *sql.Context, name string) (sql.Database, error)
- func (prov *DatabaseProvider) DbFile() string
- func (prov *DatabaseProvider) DefaultCatalogName() string
- func (prov *DatabaseProvider) DropCatalog(name string, ifExists bool) error
- func (prov *DatabaseProvider) DropDatabase(ctx *sql.Context, name string) error
- func (prov *DatabaseProvider) DuckLakeEnabled() bool
- func (prov *DatabaseProvider) ExternalStoredProcedure(ctx *sql.Context, name string, numOfParams int) (*sql.ExternalStoredProcedureDetails, error)
- func (prov *DatabaseProvider) ExternalStoredProcedures(ctx *sql.Context, name string) ([]sql.ExternalStoredProcedureDetails, error)
- func (prov *DatabaseProvider) HasCatalog(name string) bool
- func (prov *DatabaseProvider) HasDatabase(ctx *sql.Context, name string) bool
- func (prov *DatabaseProvider) InitializeConnection(ctx context.Context, conn *stdsql.Conn) error
- func (prov *DatabaseProvider) InitializeStorage(ctx context.Context) error
- func (prov *DatabaseProvider) IsReady() bool
- func (prov *DatabaseProvider) Pool() *ConnectionPool
- func (prov *DatabaseProvider) Restart(readOnly bool) error
- func (prov *DatabaseProvider) Storage() *stdsql.DB
- type EmptyTableEditor
- func (e *EmptyTableEditor) Close(*sql.Context) error
- func (e *EmptyTableEditor) DiscardChanges(ctx *sql.Context, errorEncountered error) error
- func (e *EmptyTableEditor) StatementBegin(ctx *sql.Context)
- func (e *EmptyTableEditor) StatementComplete(ctx *sql.Context) error
- func (e *EmptyTableEditor) Update(ctx *sql.Context, old sql.Row, new sql.Row) error
- type ExtensionArtifact
- type ExtraTableInfo
- type ExtraViewInfo
- type Index
- func (idx *Index) CanSupport(_ *sql.Context, ranges ...sql.Range) bool
- func (idx *Index) CanSupportOrderBy(expr sql.Expression) bool
- func (idx *Index) ColumnExpressionTypes(ctx *sql.Context) []sql.ColumnExpressionType
- func (idx *Index) Comment() string
- func (idx *Index) CoversColumns(cols []string) bool
- func (idx *Index) Database() string
- func (idx *Index) Expressions() []string
- func (idx *Index) ID() string
- func (idx *Index) IndexType() string
- func (idx *Index) IsFullText() bool
- func (idx *Index) IsGenerated() bool
- func (idx *Index) IsSpatial() bool
- func (idx *Index) IsUnique() bool
- func (idx *Index) IsVector() bool
- func (idx *Index) PrefixLengths() []uint16
- func (idx *Index) Table() string
- type IndexMeta
- type IndexedTable
- type InternalMacro
- type InternalSchema
- type InternalTable
- func (it *InternalTable) CountAllStmt() string
- func (it *InternalTable) DeleteAllStmt() string
- func (it *InternalTable) DeleteStmt() string
- func (it *InternalTable) QualifiedName() string
- func (it *InternalTable) SelectAllStmt() string
- func (it *InternalTable) SelectColumnsStmt(valueColumns []string) string
- func (it *InternalTable) SelectStmt() string
- func (it *InternalTable) UpdateAllStmt(valueColumns []string) string
- func (it *InternalTable) UpdateStmt(keyColumns []string, valueColumns []string) string
- func (it *InternalTable) UpsertStmt() string
- type InternalView
- type MacroDefinition
- type MySQLType
- type ProviderOption
- type Table
- func (t *Table) AddColumn(ctx *sql.Context, column *sql.Column, order *sql.ColumnOrder) error
- func (t *Table) AutoIncrementSetter(ctx *sql.Context) sql.AutoIncrementSetter
- func (t *Table) Collation() sql.CollationID
- func (t *Table) Comment() string
- func (t *Table) CreateCheck(ctx *sql.Context, check *sql.CheckDefinition) error
- func (t *Table) CreateIndex(ctx *sql.Context, indexDef sql.IndexDef) error
- func (t *Table) DataLength(ctx *sql.Context) (uint64, error)
- func (t *Table) Deleter(*sql.Context) sql.RowDeleter
- func (t *Table) DropCheck(ctx *sql.Context, checkName string) error
- func (t *Table) DropColumn(ctx *sql.Context, columnName string) error
- func (t *Table) DropIndex(ctx *sql.Context, indexName string) error
- func (t *Table) ExtraTableInfo() ExtraTableInfo
- func (t *Table) GetChecks(ctx *sql.Context) ([]sql.CheckDefinition, error)
- func (t *Table) GetIndexes(ctx *sql.Context) ([]sql.Index, error)
- func (t *Table) GetNextAutoIncrementValue(ctx *sql.Context, insertVal any) (uint64, error)
- func (t *Table) HasPrimaryKey() bool
- func (t *Table) IndexedAccess(_ *sql.Context, lookup sql.IndexLookup) sql.IndexedTable
- func (t *Table) Inserter(*sql.Context) sql.RowInserter
- func (t *Table) ModifyColumn(ctx *sql.Context, columnName string, column *sql.Column, ...) error
- func (t *Table) ModifyComment(ctx *sql.Context, text string) error
- func (t *Table) Name() string
- func (t *Table) PartitionRows(ctx *sql.Context, _ sql.Partition) (sql.RowIter, error)
- func (t *Table) Partitions(ctx *sql.Context) (sql.PartitionIter, error)
- func (t *Table) PeekNextAutoIncrementValue(ctx *sql.Context) (uint64, error)
- func (t *Table) PreciseMatch() bool
- func (t *Table) PrimaryKeySchema(_ *sql.Context) sql.PrimaryKeySchema
- func (t *Table) RenameIndex(ctx *sql.Context, fromIndexName string, toIndexName string) error
- func (t *Table) Replacer(*sql.Context) sql.RowReplacer
- func (t *Table) RowCount(ctx *sql.Context) (uint64, bool, error)
- func (t *Table) Schema(_ *sql.Context) sql.Schema
- func (t *Table) String() string
- func (t *Table) Truncate(ctx *sql.Context) (int, error)
- func (t *Table) Updater(ctx *sql.Context) sql.RowUpdater
Constants ¶
const ( // ManagedCommentPrefix is the prefix for comments that are managed by the catalog. ManagedCommentPrefix = "base64:" // SequenceNamePrefix is the prefix for sequence names that are managed by the catalog. SequenceNamePrefix = "__sys_table_seq_" )
const DuckDBDecimalTypeMaxPrecision = 38
const DuckDBExtensionABI = DuckDBExtensionVersion
DuckDBExtensionABI is kept as a separate field in the manifest so an artifact cannot be accidentally paired with a different DuckDB binding.
const DuckDBExtensionVersion = "1.5.5"
DuckDBExtensionVersion is the ABI/version used by the Go DuckDB binding in this repository. Extension artifacts are never downloaded at runtime.
const DuckLakeSecretName = "__myduckserver_ducklake_service"
DuckLakeSecretName is an internal, service-owned secret name. User SQL that mentions any SECRET object is rejected before it reaches DuckDB.
const RedactedSensitiveSQL = "[redacted service-managed SQL]"
RedactedSensitiveSQL is the stable audit value used when a service-managed statement must not be retained in logs.
const SchemaSummaryQuery = `` /* 630-byte string literal not displayed */
SchemaSummaryQuery is the stable, read-only schema discovery query for clients and agent integrations. table_schema is the client-visible database (MySQL) or schema (Postgres) name.
Keep the projection and ordering explicit: callers can consume the result without depending on information_schema's wider, version-specific schema.
Variables ¶
var ( ErrDuckDB = errors.NewKind("duckdb: %v") ErrTranspiler = errors.NewKind("transpiler: %v") )
var ( SchemaNameSYS string = "__sys__" MacroNameMyListContains string = "my_list_contains" MacroNameMySplitListStr string = "my_split_list_str" MacroNameMyCRC32 string = "mysql_crc32" )
var ErrSensitiveSQL = errors.New("statement uses a service-managed SQL feature")
ErrSensitiveSQL is returned for user statements that would bypass the service-owned DuckLake/S3 credential boundary. It intentionally contains no statement text or credential-shaped data.
var InitialDataTables = struct { PGNamespace [][]any PGRange [][]any }{ PGNamespace: [][]any{ {"99", "pg_toast", "10", ""}, {"11", "pg_catalog", "10", "{postgres=UC/postgres,=U/postgres}"}, {"2200", "public", "6171", "{pg_database_owner,=UC/pg_database_owner,=U/pg_database_owner}"}, {"13219", "information_schema", "10", "{postgres=UC/postgres,=U/postgres}"}, {"16395", "test_schema", "10", ""}, }, PGRange: [][]any{ {"3904", "23", "4451", "0", "1978", "int4range_canonical", "int4range_subdiff"}, {"3906", "1700", "4532", "0", "3125", "-", "numrange_subdiff"}, {"3908", "1114", "4533", "0", "3128", "-", "tsrange_subdiff"}, {"3910", "1184", "4534", "0", "3127", "-", "tstzrange_subdiff"}, {"3912", "1082", "4535", "0", "3122", "daterange_canonical", "daterange_subdiff"}, {"3926", "20", "4536", "0", "3124", "int8range_canonical", "int8range_subdiff"}, }, }
var InternalMacros = []InternalMacro{ { Schema: "information_schema", Name: "_pg_expandarray", IsTableMacro: true, Definitions: []MacroDefinition{ { Params: []string{"a"}, DDL: `SELECT STRUCT_PACK( x := unnest(a), n := generate_series(1, array_length(a)) ) AS item`, }, }, }, { Schema: "pg_catalog", Name: "pg_get_indexdef", IsTableMacro: false, Definitions: []MacroDefinition{ { Params: []string{"index_oid"}, DDL: `''`, }, { Params: []string{"index_oid", "column_no", "pretty_bool"}, DDL: `''`, }, }, }, { Schema: "pg_catalog", Name: "pg_get_expr", IsTableMacro: false, Definitions: []MacroDefinition{ { Params: []string{"pg_node_tree", "relation_oid"}, DDL: `pg_catalog.pg_get_expr(pg_node_tree, relation_oid)`, }, { Params: []string{"pg_node_tree", "relation_oid", "pretty_bool"}, DDL: `pg_catalog.pg_get_expr(pg_node_tree, relation_oid)`, }, }, }, { Schema: SchemaNameSYS, Name: MacroNameMyListContains, IsTableMacro: false, Definitions: []MacroDefinition{ { Params: []string{"l", "v"}, DDL: `CASE WHEN typeof(l) = 'VARCHAR' THEN list_contains(regexp_split_to_array(l::VARCHAR, '[{},\s]+'), v) ELSE list_contains(l::text[], v) END`, }, }, }, { Schema: SchemaNameSYS, Name: MacroNameMySplitListStr, IsTableMacro: false, Definitions: []MacroDefinition{ { Params: []string{"l"}, DDL: `regexp_split_to_array(l::VARCHAR, '[{},\s]+')`, }, }, }, { Schema: SchemaNameSYS, Name: MacroNameMyCRC32, IsTableMacro: false, Definitions: []MacroDefinition{ { Params: []string{"s"}, DDL: `xor( list_reduce( list_prepend( 4294967295, list_transform( range(1, length(CAST(s AS TEXT)) + 1), i -> ascii(substring(CAST(s AS TEXT), i, 1)) ) ), (crc, b) -> xor( crc // 256, [0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918000,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117][1 + (xor(crc, b) % 256)] ) ), 4294967295 )`, }, }, }, }
var InternalSchemas = struct { SYS InternalSchema MySQL InternalSchema }{ SYS: InternalSchema{ Schema: "__sys__", }, MySQL: InternalSchema{ Schema: "mysql", }, }
var InternalTables = struct { PersistentVariable InternalTable BinlogPosition InternalTable PgSubscription InternalTable GlobalStatus InternalTable // TODO(sean): This is a temporary work around for clients that query the 'pg_catalog.pg_stat_replication'. // Once we add 'pg_catalog' and support views for PG, replace this by a view. // https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-REPLICATION-VIEW PGStatReplication InternalTable PGRange InternalTable PGType InternalTable PGProc InternalTable PGClass InternalTable PGNamespace InternalTable PGMatViews InternalTable }{ PersistentVariable: InternalTable{ Schema: "__sys__", Name: "persistent_variable", KeyColumns: []string{"name"}, ValueColumns: []string{"value", "vtype"}, DDL: "name TEXT PRIMARY KEY, value TEXT, vtype TEXT", }, BinlogPosition: InternalTable{ Schema: "__sys__", Name: "binlog_position", KeyColumns: []string{"channel"}, ValueColumns: []string{"position"}, DDL: "channel TEXT PRIMARY KEY, position TEXT", }, PgSubscription: InternalTable{ Schema: "__sys__", Name: "pg_subscription", KeyColumns: []string{"subname"}, ValueColumns: []string{"subconninfo", "subpublication", "subskiplsn", "subenabled"}, DDL: "subname TEXT PRIMARY KEY, subconninfo TEXT, subpublication TEXT, subskiplsn TEXT, subenabled BOOLEAN", }, GlobalStatus: InternalTable{ Schema: "performance_schema", Name: "global_status", KeyColumns: []string{"VARIABLE_NAME"}, ValueColumns: []string{"VARIABLE_VALUE"}, DDL: "VARIABLE_NAME TEXT PRIMARY KEY, VARIABLE_VALUE TEXT", InitialData: [][]any{ {"Innodb_redo_log_enabled", "OFF"}, }, }, PGStatReplication: InternalTable{ Schema: "__sys__", Name: "pg_stat_replication", KeyColumns: []string{ "pid", }, ValueColumns: []string{ "usesysid", "usename", "application_name", "client_addr", "client_hostname", "client_port", "backend_start", "backend_xmin", "state", "sent_lsn", "write_lsn", "flush_lsn", "replay_lsn", "write_lag", "flush_lag", "replay_lag", "sync_priority", "sync_state", "reply_time", }, DDL: "pid INTEGER PRIMARY KEY, usesysid TEXT, usename TEXT, application_name TEXT, client_addr TEXT, client_hostname TEXT, client_port INTEGER, backend_start TIMESTAMP, backend_xmin INTEGER, state TEXT, sent_lsn TEXT, write_lsn TEXT, flush_lsn TEXT, replay_lsn TEXT, write_lag INTERVAL, flush_lag INTERVAL, replay_lag INTERVAL, sync_priority INTEGER, sync_state TEXT, reply_time TIMESTAMP", }, PGRange: InternalTable{ Schema: "__sys__", Name: "pg_range", KeyColumns: []string{"rngtypid"}, ValueColumns: []string{"rngsubtype", "rngmultitypid", "rngcollation", "rngsubopc", "rngcanonical", "rngsubdiff"}, DDL: "rngtypid BIGINT PRIMARY KEY, rngsubtype BIGINT, rngmultitypid BIGINT, rngcollation BIGINT, rngsubopc BIGINT, rngcanonical VARCHAR, rngsubdiff VARCHAR", InitialData: InitialDataTables.PGRange, }, PGType: InternalTable{ Schema: "__sys__", Name: "pg_type", KeyColumns: []string{ "oid", }, ValueColumns: []string{ "typname", "typnamespace", "typowner", "typlen", "typbyval", "typtype", "typcategory", "typispreferred", "typisdefined", "typdelim", "typrelid", "typsubscript", "typelem", "typarray", "typinput", "typoutput", "typreceive", "typsend", "typmodin", "typmodout", "typanalyze", "typalign", "typstorage", "typnotnull", "typbasetype", "typtypmod", "typndims", "typcollation", "typdefaultbin", "typdefault", "typacl", }, DDL: "oid BIGINT NOT NULL PRIMARY KEY, " + "typname VARCHAR , " + "typnamespace BIGINT , " + "typowner BIGINT , " + "typlen SMALLINT , " + "typbyval BOOLEAN , " + "typtype CHAR , " + "typcategory CHAR , " + "typispreferred BOOLEAN , " + "typisdefined BOOLEAN , " + "typdelim CHAR , " + "typrelid BIGINT , " + "typsubscript BIGINT , " + "typelem BIGINT , " + "typarray BIGINT , " + "typinput BIGINT , " + "typoutput BIGINT , " + "typreceive BIGINT , " + "typsend BIGINT , " + "typmodin BIGINT , " + "typmodout BIGINT , " + "typanalyze BIGINT , " + "typalign CHAR , " + "typstorage CHAR , " + "typnotnull BOOLEAN , " + "typbasetype BIGINT , " + "typtypmod INTEGER , " + "typndims INTEGER , " + "typcollation BIGINT , " + "typdefaultbin VARCHAR, " + "typdefault TEXT, " + "typacl TEXT", }, PGProc: InternalTable{ Schema: "__sys__", Name: "pg_proc", KeyColumns: []string{ "oid", }, ValueColumns: []string{ "proname", "pronamespace", "proowner", "prolang", "procost", "prorows", "provariadic", "prosupport", "prokind", "prosecdef", "proleakproof", "proisstrict", "proretset", "provolatile", "proparallel", "pronargs", "pronargdefaults", "prorettype", "proargtypes", "proallargtypes", "proargmodes", "proargnames", "proargdefaults", "protrftypes", "prosrc", "probin", "prosqlbody", "proconfig", "proacl", }, DDL: "oid BIGINT NOT NULL PRIMARY KEY," + "proname VARCHAR ," + "pronamespace BIGINT ," + "proowner BIGINT ," + "prolang BIGINT ," + "procost FLOAT ," + "prorows FLOAT ," + "provariadic BIGINT ," + "prosupport BIGINT ," + "prokind CHAR ," + "prosecdef BOOLEAN ," + "proleakproof BOOLEAN ," + "proisstrict BOOLEAN ," + "proretset BOOLEAN ," + "provolatile CHAR ," + "proparallel CHAR ," + "pronargs SMALLINT ," + "pronargdefaults SMALLINT ," + "prorettype BIGINT ," + "proargtypes VARCHAR ," + "proallargtypes VARCHAR," + "proargmodes VARCHAR," + "proargnames VARCHAR," + "proargdefaults TEXT," + "protrftypes VARCHAR," + "prosrc TEXT ," + "probin TEXT," + "prosqlbody TEXT," + "proconfig VARCHAR," + "proacl VARCHAR", }, PGClass: InternalTable{ Schema: "__sys__", Name: "pg_class", KeyColumns: []string{ "oid", }, ValueColumns: []string{ "relname", "relnamespace", "reltype", "reloftype", "relowner", "relam", "relfilenode", "reltablespace", "relpages", "reltuples", "relallvisible", "reltoastrelid", "relhasindex", "relisshared", "relpersistence", "relkind", "relnatts", "relchecks", "relhasrules", "relhastriggers", "relhassubclass", "relrowsecurity", "relforcerowsecurity", "relispopulated", "relreplident", "relispartition", "relrewrite", "relfrozenxid", "relminmxid", "relacl", "reloptions", "relpartbound", }, DDL: "oid BIGINT NOT NULL PRIMARY KEY," + "relname VARCHAR ," + "relnamespace BIGINT ," + "reltype BIGINT ," + "reloftype BIGINT ," + "relowner BIGINT ," + "relam BIGINT ," + "relfilenode BIGINT ," + "reltablespace BIGINT ," + "relpages INTEGER ," + "reltuples FLOAT ," + "relallvisible INTEGER ," + "reltoastrelid BIGINT ," + "relhasindex BOOLEAN ," + "relisshared BOOLEAN ," + "relpersistence CHAR ," + "relkind CHAR ," + "relnatts SMALLINT ," + "relchecks SMALLINT ," + "relhasrules BOOLEAN ," + "relhastriggers BOOLEAN ," + "relhassubclass BOOLEAN ," + "relrowsecurity BOOLEAN ," + "relforcerowsecurity BOOLEAN ," + "relispopulated BOOLEAN ," + "relreplident CHAR ," + "relispartition BOOLEAN ," + "relrewrite BIGINT ," + "relfrozenxid BIGINT ," + "relminmxid BIGINT ," + "relacl TEXT," + "reloptions TEXT," + "relpartbound TEXT", }, PGNamespace: InternalTable{ Schema: "__sys__", Name: "pg_namespace", KeyColumns: []string{ "oid", }, ValueColumns: []string{ "nspname", "nspowner", "nspacl", }, DDL: "oid BIGINT NOT NULL PRIMARY KEY," + "nspname VARCHAR NOT NULL," + "nspowner BIGINT NOT NULL," + "nspacl TEXT", InitialData: InitialDataTables.PGNamespace, }, PGMatViews: InternalTable{ Schema: "__sys__", Name: "pg_matviews", KeyColumns: []string{ "schemaname", "matviewname", }, ValueColumns: []string{ "matviewowner", "tablespace", "hasindexes", "ispopulated", "definition", }, DDL: "schemaname VARCHAR NOT NULL, " + "matviewname VARCHAR NOT NULL, " + "matviewowner VARCHAR, " + "tablespace VARCHAR, " + "hasindexes BOOLEAN, " + "ispopulated BOOLEAN, " + "definition TEXT", }, }
var InternalViews = []InternalView{
{
Schema: "__sys__",
Name: "pg_stat_user_tables",
DDL: `SELECT
t.table_schema || '.' || t.table_name AS relid, -- Create a unique ID for the table
t.table_schema AS schemaname, -- Schema name
t.table_name AS relname, -- Table name
0 AS seq_scan, -- Default to 0 (DuckDB doesn't track this)
NULL AS last_seq_scan, -- Placeholder (DuckDB doesn't track this)
0 AS seq_tup_read, -- Default to 0
0 AS idx_scan, -- Default to 0
NULL AS last_idx_scan, -- Placeholder
0 AS idx_tup_fetch, -- Default to 0
0 AS n_tup_ins, -- Default to 0 (inserted tuples not tracked)
0 AS n_tup_upd, -- Default to 0 (updated tuples not tracked)
0 AS n_tup_del, -- Default to 0 (deleted tuples not tracked)
0 AS n_tup_hot_upd, -- Default to 0 (HOT updates not tracked)
0 AS n_tup_newpage_upd, -- Default to 0 (new page updates not tracked)
0 AS n_live_tup, -- Default to 0 (live tuples not tracked)
0 AS n_dead_tup, -- Default to 0 (dead tuples not tracked)
0 AS n_mod_since_analyze, -- Default to 0
0 AS n_ins_since_vacuum, -- Default to 0
NULL AS last_vacuum, -- Placeholder
NULL AS last_autovacuum, -- Placeholder
NULL AS last_analyze, -- Placeholder
NULL AS last_autoanalyze, -- Placeholder
0 AS vacuum_count, -- Default to 0
0 AS autovacuum_count, -- Default to 0
0 AS analyze_count, -- Default to 0
0 AS autoanalyze_count -- Default to 0
FROM
information_schema.tables t
WHERE
t.table_type = 'BASE TABLE'; -- Include only base tables (not views)`,
},
{
Schema: "__sys__",
Name: "pg_index",
DDL: `SELECT
ROW_NUMBER() OVER () AS indexrelid, -- Simulated unique ID for the index
t.table_oid AS indrelid, -- OID of the table
COUNT(k.column_name) AS indnatts, -- Number of columns included in the index
COUNT(k.column_name) AS indnkeyatts, -- Number of key columns in the index (same as indnatts here)
CASE
WHEN c.constraint_type = 'UNIQUE' THEN TRUE
ELSE FALSE
END AS indisunique, -- Indicates if the index is unique
CASE
WHEN c.constraint_type = 'PRIMARY KEY' THEN TRUE
ELSE FALSE
END AS indisprimary, -- Indicates if the index is a primary key
ARRAY_AGG(k.ordinal_position ORDER BY k.ordinal_position) AS indkey, -- Array of column positions
ARRAY[]::BIGINT[] AS indcollation, -- DuckDB does not support collation, set to default
ARRAY[]::BIGINT[] AS indclass, -- DuckDB does not support index class, set to default
ARRAY[]::INTEGER[] AS indoption, -- DuckDB does not support index options, set to default
NULL AS indexprs, -- DuckDB does not support expression indexes, set to NULL
NULL AS indpred -- DuckDB does not support partial indexes, set to NULL
FROM
information_schema.key_column_usage k
JOIN
information_schema.table_constraints c
ON k.constraint_name = c.constraint_name
AND k.table_name = c.table_name
JOIN
duckdb_tables() t
ON k.table_name = t.table_name
AND k.table_schema = t.schema_name
WHERE
c.constraint_type IN ('PRIMARY KEY', 'UNIQUE') -- Only select primary key and unique constraints
GROUP BY
t.table_oid, c.constraint_type, c.constraint_name
ORDER BY
t.table_oid;`,
},
}
var SystemViews = map[string]struct{}{
"duckdb_columns": {},
"duckdb_constraints": {},
"duckdb_databases": {},
"duckdb_indexes": {},
"duckdb_schemas": {},
"duckdb_tables": {},
"duckdb_types": {},
"duckdb_views": {},
"pragma_database_list": {},
"sqlite_master": {},
"sqlite_schema": {},
"sqlite_temp_master": {},
"sqlite_temp_schema": {},
}
Functions ¶
func ConnectIdentifiersANSI ¶
func DecodeCreateindex ¶
func DecodeIndexName ¶
func EncodeIndexName ¶
EncodeIndexName uses a simple encoding scheme (table$$index) for better visibility which is useful for debugging.
func FullColumnName ¶
func FullIndexName ¶
func FullSchemaName ¶
func FullTableName ¶
func IsDuckDBCatalogError ¶
func IsDuckDBIndexAlreadyExistsError ¶
ERROR 1105 (HY000): duckdb: Catalog Error: Index with name "x_idx" already exists!
func IsDuckDBNotNullConstraintViolationError ¶
Constraint Error: NOT NULL constraint failed: <column>
func IsDuckDBSetSchemaNotFoundError ¶
ERROR 1105 (HY000): unknown error: Catalog Error: SET schema: No catalog + schema named "mysql.db0" found.
func IsDuckDBUniqueConstraintViolationError ¶
ERROR 1105 (HY000): duckdb: Constraint Error: Data contains duplicates on indexed column(s)
func IsSensitiveSQL ¶
IsSensitiveSQL reports whether query contains a DuckLake/S3 control or credential-inspection operation. The scanner is deliberately lexical: the MySQL and PostgreSQL parsers accept different SQL dialects, while comments, quoted identifiers, dollar-quoted strings, and multi-statements must all be handled consistently at the protocol boundary.
func IsSystemView ¶
func QuoteIdentifierANSI ¶
func RedactSensitiveSQL ¶
RedactSensitiveSQL is a defensive logging helper for callers that receive a statement before they can reject it. Non-sensitive text is returned as-is; sensitive text is replaced wholesale so no literal can reach a log field.
func RejectSensitiveSQL ¶
RejectSensitiveSQL rejects service-control and credential-inspection SQL before protocol parsing, tracing, auditing, or prepared-statement handling. Internal service code does not call this function and can use parameterized APIs instead.
func VerifyDuckLakeExtensions ¶
func VerifyDuckLakeExtensions(extensionDir string, manifest []ExtensionArtifact) error
VerifyDuckLakeExtensions verifies every fixed artifact before it is handed to DuckDB. It rejects symlinks and non-regular files so a mutable service path cannot silently substitute a different extension.
func VerifyDuckLakeExtensionsForTarget ¶
func VerifyDuckLakeExtensionsForTarget(extensionDir string, manifest []ExtensionArtifact, goos, goarch string) error
VerifyDuckLakeExtensionsForTarget additionally binds every artifact to the requested Linux architecture. It is used by the runtime before LOAD so an arm64 artifact cannot be substituted into an amd64 image (or vice versa).
Types ¶
type AnnotatedDuckType ¶
type AnnotatedDuckType struct {
// contains filtered or unexported fields
}
func DuckdbDataType ¶
func DuckdbDataType(mysqlType sql.Type) (AnnotatedDuckType, error)
func (AnnotatedDuckType) MySQL ¶
func (t AnnotatedDuckType) MySQL() MySQLType
func (AnnotatedDuckType) Name ¶
func (t AnnotatedDuckType) Name() string
type ColumnInfo ¶
type ColumnInfo struct {
ColumnName string
ColumnIndex int
DataType sql.Type
IsNullable bool
ColumnDefault stdsql.NullString
Comment stdsql.NullString
}
type Comment ¶
type Comment[T any] struct { Text string `json:"text,omitempty"` Meta T `json:"meta,omitempty"` // extra information, e.g. the original MySQL column type, etc. }
func DecodeComment ¶
func NewComment ¶
func NewCommentWithMeta ¶
type ConnectionPool ¶
func NewConnectionPool ¶
func (*ConnectionPool) Close ¶
func (p *ConnectionPool) Close() error
func (*ConnectionPool) CloseConn ¶
func (p *ConnectionPool) CloseConn(id uint32) error
func (*ConnectionPool) CloseTxn ¶
func (p *ConnectionPool) CloseTxn(id uint32)
func (*ConnectionPool) Connector ¶
func (p *ConnectionPool) Connector() *duckdb.Connector
func (*ConnectionPool) CurrentCatalog ¶
func (p *ConnectionPool) CurrentCatalog(id uint32) string
CurrentCatalog retrieves the current catalog of the connection. Before the first connection, it returns the owning provider's catalog so GMS can resolve fully qualified names. Closed or broken connections still return empty.
func (*ConnectionPool) CurrentSchema ¶
func (p *ConnectionPool) CurrentSchema(id uint32) string
CurrentSchema retrieves the current schema of the connection. Returns an empty string if the connection is not established or the schema cannot be retrieved.
func (*ConnectionPool) GetConnForSchema ¶
func (*ConnectionPool) SetConnectionInitializer ¶
func (p *ConnectionPool) SetConnectionInitializer(initializer func(context.Context, *stdsql.Conn) error)
SetConnectionInitializer installs a hook that runs whenever a logical session acquires a connection outside an active session transaction. The hook receives the acquisition context, including its query-origin classification. Running it for both new and reused logical connections prevents a connection that was previously used by one origin from carrying session settings into another origin; GetTxn runs it before BeginTx and then keeps transaction-scoped state stable until that transaction closes.
type Database ¶
type Database struct {
// contains filtered or unexported fields
}
func NewDatabase ¶
func (*Database) CopyTableData ¶
func (d *Database) CopyTableData(ctx *sql.Context, sourceTable string, destinationTable string) (uint64, error)
CopyTableData implements sql.TableCopierDatabase interface.
func (*Database) CreateTable ¶
func (d *Database) CreateTable(ctx *sql.Context, name string, schema sql.PrimaryKeySchema, collation sql.CollationID, comment string) error
CreateTable implements sql.TableCreator.
func (*Database) CreateTemporaryTable ¶
func (d *Database) CreateTemporaryTable(ctx *sql.Context, name string, schema sql.PrimaryKeySchema, collation sql.CollationID) error
CreateTemporaryTable implements sql.CreateTemporaryTable.
func (*Database) CreateTrigger ¶
CreateTrigger implements sql.TriggerDatabase.
func (*Database) CreateView ¶
func (d *Database) CreateView(ctx *sql.Context, name string, selectStatement string, createViewStmt string) error
CreateView implements sql.ViewDatabase.
func (*Database) DropStoredProcedure ¶
DropStoredProcedure implements sql.StoredProcedureDatabase.
func (*Database) DropTrigger ¶
DropTrigger implements sql.TriggerDatabase.
func (*Database) GetCollation ¶
func (d *Database) GetCollation(ctx *sql.Context) sql.CollationID
GetCollation implements sql.CollatedDatabase.
func (*Database) GetStoredProcedure ¶
func (d *Database) GetStoredProcedure(ctx *sql.Context, name string) (sql.StoredProcedureDetails, bool, error)
GetStoredProcedure implements sql.StoredProcedureDatabase. Routines are not hosted in DuckDB; SHOW FUNCTION STATUS should be empty.
func (*Database) GetStoredProcedures ¶
GetStoredProcedures implements sql.StoredProcedureDatabase.
func (*Database) GetTableInsensitive ¶
GetTableInsensitive implements sql.Database.
func (*Database) GetTableNames ¶
GetTableNames implements sql.Database.
func (*Database) GetTriggers ¶
GetTriggers implements sql.TriggerDatabase.
func (*Database) GetViewDefinition ¶
func (d *Database) GetViewDefinition(ctx *sql.Context, viewName string) (sql.ViewDefinition, bool, error)
GetViewDefinition implements sql.ViewDatabase.
func (*Database) RenameTable ¶
RenameTable implements sql.TableRenamer.
func (*Database) SaveStoredProcedure ¶
SaveStoredProcedure implements sql.StoredProcedureDatabase.
func (*Database) SetCollation ¶
SetCollation implements sql.CollatedDatabase.
type DatabaseProvider ¶
type DatabaseProvider struct {
// contains filtered or unexported fields
}
func NewDBProvider ¶
func NewDBProvider(defaultTimeZone, dataDir, defaultDB string, options ...ProviderOption) (prov *DatabaseProvider, err error)
func NewInMemoryDBProvider ¶
func NewInMemoryDBProvider(options ...ProviderOption) *DatabaseProvider
func (*DatabaseProvider) AllDatabases ¶
func (prov *DatabaseProvider) AllDatabases(ctx *sql.Context) []sql.Database
AllDatabases implements sql.DatabaseProvider.
func (*DatabaseProvider) AttachCatalog ¶
func (prov *DatabaseProvider) AttachCatalog(file interface { IsDir() bool Name() string }, ignoreNonDB bool) error
func (*DatabaseProvider) Close ¶
func (prov *DatabaseProvider) Close() error
func (*DatabaseProvider) Connector ¶
func (prov *DatabaseProvider) Connector() *duckdb.Connector
func (*DatabaseProvider) CreateCatalog ¶
func (prov *DatabaseProvider) CreateCatalog(name string, ifNotExists bool) error
func (*DatabaseProvider) CreateDatabase ¶
func (prov *DatabaseProvider) CreateDatabase(ctx *sql.Context, name string) error
CreateDatabase implements sql.MutableDatabaseProvider.
func (*DatabaseProvider) DataDir ¶
func (prov *DatabaseProvider) DataDir() string
func (*DatabaseProvider) DbFile ¶
func (prov *DatabaseProvider) DbFile() string
func (*DatabaseProvider) DefaultCatalogName ¶
func (prov *DatabaseProvider) DefaultCatalogName() string
func (*DatabaseProvider) DropCatalog ¶
func (prov *DatabaseProvider) DropCatalog(name string, ifExists bool) error
func (*DatabaseProvider) DropDatabase ¶
func (prov *DatabaseProvider) DropDatabase(ctx *sql.Context, name string) error
DropDatabase implements sql.MutableDatabaseProvider.
func (*DatabaseProvider) DuckLakeEnabled ¶
func (prov *DatabaseProvider) DuckLakeEnabled() bool
DuckLakeEnabled reports whether the service-managed DuckLake connection layer passed validation at provider construction. It never exposes secret values.
func (*DatabaseProvider) ExternalStoredProcedure ¶
func (prov *DatabaseProvider) ExternalStoredProcedure(ctx *sql.Context, name string, numOfParams int) (*sql.ExternalStoredProcedureDetails, error)
ExternalStoredProcedure implements sql.ExternalStoredProcedureProvider.
func (*DatabaseProvider) ExternalStoredProcedures ¶
func (prov *DatabaseProvider) ExternalStoredProcedures(ctx *sql.Context, name string) ([]sql.ExternalStoredProcedureDetails, error)
ExternalStoredProcedures implements sql.ExternalStoredProcedureProvider.
func (*DatabaseProvider) HasCatalog ¶
func (prov *DatabaseProvider) HasCatalog(name string) bool
func (*DatabaseProvider) HasDatabase ¶
func (prov *DatabaseProvider) HasDatabase(ctx *sql.Context, name string) bool
HasDatabase implements sql.DatabaseProvider.
func (*DatabaseProvider) InitializeConnection ¶
InitializeConnection applies the service-managed DuckLake setup to an already acquired physical connection. Callers must provide an explicit frontend, maintenance, or recovery origin in ctx; unknown and replication origins deliberately no-op. The runtime keys successful setup by the underlying driver.Conn, so a reused logical *sql.Conn is cheap while every newly opened physical connection is initialized independently.
func (*DatabaseProvider) InitializeStorage ¶
func (prov *DatabaseProvider) InitializeStorage(ctx context.Context) error
InitializeStorage is retained as a compatibility wrapper for callers that have not yet acquired a connection. New request paths must use InitializeConnection on their already-owned *sql.Conn; this wrapper never caches a database generation and is not used to warm a different request connection.
func (*DatabaseProvider) IsReady ¶
func (prov *DatabaseProvider) IsReady() bool
func (*DatabaseProvider) Pool ¶
func (prov *DatabaseProvider) Pool() *ConnectionPool
func (*DatabaseProvider) Restart ¶
func (prov *DatabaseProvider) Restart(readOnly bool) error
func (*DatabaseProvider) Storage ¶
func (prov *DatabaseProvider) Storage() *stdsql.DB
type EmptyTableEditor ¶
type EmptyTableEditor struct {
}
func (*EmptyTableEditor) Close ¶
func (e *EmptyTableEditor) Close(*sql.Context) error
Close implements sql.RowUpdater.
func (*EmptyTableEditor) DiscardChanges ¶
func (e *EmptyTableEditor) DiscardChanges(ctx *sql.Context, errorEncountered error) error
DiscardChanges implements sql.RowUpdater.
func (*EmptyTableEditor) StatementBegin ¶
func (e *EmptyTableEditor) StatementBegin(ctx *sql.Context)
StatementBegin implements sql.RowUpdater.
func (*EmptyTableEditor) StatementComplete ¶
func (e *EmptyTableEditor) StatementComplete(ctx *sql.Context) error
StatementComplete implements sql.RowUpdater.
type ExtensionArtifact ¶
type ExtensionArtifact struct {
Name string
FileName string
SHA256 string
Architecture string
ABI string
Version string
}
ExtensionArtifact is one fixed, decompressed DuckDB extension binary. The filename is deliberately fixed so service configuration cannot select an arbitrary extension or trigger an INSTALL/network fallback.
func CurrentDuckLakeExtensionManifest ¶
func CurrentDuckLakeExtensionManifest() ([]ExtensionArtifact, error)
CurrentDuckLakeExtensionManifest resolves the manifest for the running binary's target platform.
func DuckLakeExtensionManifest ¶
func DuckLakeExtensionManifest(goos, goarch string) ([]ExtensionArtifact, error)
DuckLakeExtensionManifest returns a copy of the fixed manifest for a supported target. Only Linux amd64 and arm64 artifacts are accepted.
type ExtraTableInfo ¶
type ExtraTableInfo struct {
PkOrdinals []int
Replicated bool
Sequence string
Checks []sql.CheckDefinition
}
type ExtraViewInfo ¶
type Index ¶
type Index struct {
DbName string
TableName string
Exprs []sql.Expression
Name string
Unique bool
CommentObj *Comment[IndexMeta]
PrefixLens []uint16
}
func (*Index) CanSupport ¶
CanSupport returns whether this index supports lookups on the given range filters.
func (*Index) CanSupportOrderBy ¶
func (idx *Index) CanSupportOrderBy(expr sql.Expression) bool
CanSupportOrderBy returns whether this index can optimize ORDER BY a given expression type. Verifying that the expression's children match the index columns are done separately.
func (*Index) ColumnExpressionTypes ¶
func (idx *Index) ColumnExpressionTypes(ctx *sql.Context) []sql.ColumnExpressionType
ColumnExpressionTypes returns each expression and its associated Type. Each expression string should exactly match the string returned from Index.Expressions(). ColumnExpressionTypes implements the interface sql.Index.
func (*Index) CoversColumns ¶
CoversColumns reports whether every requested column is present in this index.
func (*Index) Expressions ¶
Expressions returns the indexed expressions. If the result is more than one expression, it means the index has multiple columns indexed. If it's just one, it means it may be an expression or a column.
func (*Index) IsFullText ¶
IsFullText returns whether this index is a Full-Text index
func (*Index) IsGenerated ¶
IsGenerated returns whether this index was generated. Generated indexes are used for index access, but are not displayed (such as with SHOW INDEXES).
func (*Index) PrefixLengths ¶
PrefixLengths returns the prefix lengths for each column in this index
type IndexedTable ¶
type IndexedTable struct {
*Table
Lookup sql.IndexLookup
}
func (*IndexedTable) LookupPartitions ¶
func (t *IndexedTable) LookupPartitions(ctx *sql.Context, lookup sql.IndexLookup) (sql.PartitionIter, error)
type InternalMacro ¶
type InternalMacro struct {
Schema string
Name string
IsTableMacro bool
// A macro can be overloaded with multiple definitions, each with a different set of parameters.
// https://duckdb.org/docs/sql/statements/create_macro.html#overloading
Definitions []MacroDefinition
}
func (*InternalMacro) LogicalName ¶
func (v *InternalMacro) LogicalName() string
func (*InternalMacro) QualifiedName ¶
func (v *InternalMacro) QualifiedName() string
type InternalSchema ¶
type InternalSchema struct {
Schema string
}
type InternalTable ¶
type InternalTable struct {
Schema string
Name string
KeyColumns []string
ValueColumns []string
DDL string
InitialData [][]any
}
func GetInternalTables ¶
func GetInternalTables() []InternalTable
func (*InternalTable) CountAllStmt ¶
func (it *InternalTable) CountAllStmt() string
func (*InternalTable) DeleteAllStmt ¶
func (it *InternalTable) DeleteAllStmt() string
func (*InternalTable) DeleteStmt ¶
func (it *InternalTable) DeleteStmt() string
func (*InternalTable) QualifiedName ¶
func (it *InternalTable) QualifiedName() string
func (*InternalTable) SelectAllStmt ¶
func (it *InternalTable) SelectAllStmt() string
func (*InternalTable) SelectColumnsStmt ¶
func (it *InternalTable) SelectColumnsStmt(valueColumns []string) string
func (*InternalTable) SelectStmt ¶
func (it *InternalTable) SelectStmt() string
func (*InternalTable) UpdateAllStmt ¶
func (it *InternalTable) UpdateAllStmt(valueColumns []string) string
func (*InternalTable) UpdateStmt ¶
func (it *InternalTable) UpdateStmt(keyColumns []string, valueColumns []string) string
func (*InternalTable) UpsertStmt ¶
func (it *InternalTable) UpsertStmt() string
type InternalView ¶
func (*InternalView) QualifiedName ¶
func (v *InternalView) QualifiedName() string
type MacroDefinition ¶
type MySQLType ¶
type MySQLType struct {
Name string
Length uint32 `json:",omitempty"`
Precision uint8 `json:",omitempty"`
Scale uint8 `json:",omitempty"`
Unsigned bool `json:",omitempty"`
Display uint8 `json:",omitempty"` // Display width for integer types
Collation uint16 `json:",omitempty"` // For string types
Values []string `json:",omitempty"` // For ENUM and SET
Default string `json:",omitempty"` // Default value of column
Generated string `json:",omitempty"` // Generated column expression
Virtual bool `json:",omitempty"`
Nullable *bool `json:",omitempty"` // Preserve constraints DuckDB cannot attach to generated columns.
AutoIncrement bool `json:",omitempty"` // Auto increment flag
}
type ProviderOption ¶
type ProviderOption func(*providerOptions) error
ProviderOption configures optional provider behavior while preserving the historical three-argument NewDBProvider call sites.
func WithDuckLakeConfig ¶
func WithDuckLakeConfig(config configuration.DuckLakeConfig) ProviderOption
WithDuckLakeConfig enables the service-managed DuckLake connection layer. The feature remains disabled when config.Enabled is false.
func WithDuckLakeServiceConfig ¶
func WithDuckLakeServiceConfig(config configuration.DuckLakeServiceConfig) ProviderOption
WithDuckLakeServiceConfig is a descriptive alias for WithDuckLakeConfig.
type Table ¶
type Table struct {
// contains filtered or unexported fields
}
func (*Table) AutoIncrementSetter ¶
func (t *Table) AutoIncrementSetter(ctx *sql.Context) sql.AutoIncrementSetter
AutoIncrementSetter implements sql.AutoIncrementTable.
func (*Table) Collation ¶
func (t *Table) Collation() sql.CollationID
Collation implements sql.Table.
func (*Table) CreateCheck ¶
AddCheck implements sql.CheckAlterableTable.
func (*Table) CreateIndex ¶
CreateIndex implements sql.IndexAlterableTable.
func (*Table) DataLength ¶
DataLength implements sql.StatisticsTable.
func (*Table) Deleter ¶
func (t *Table) Deleter(*sql.Context) sql.RowDeleter
Deleter implements sql.DeletableTable.
func (*Table) DropColumn ¶
DropColumn implements sql.AlterableTable.
func (*Table) ExtraTableInfo ¶
func (t *Table) ExtraTableInfo() ExtraTableInfo
func (*Table) GetIndexes ¶
GetIndexes implements sql.IndexAddressableTable. This is only used for show index in SHOW INDEX and SHOW CREATE TABLE.
func (*Table) GetNextAutoIncrementValue ¶
GetNextAutoIncrementValue implements sql.AutoIncrementTable.
func (*Table) HasPrimaryKey ¶
func (*Table) IndexedAccess ¶
func (t *Table) IndexedAccess(_ *sql.Context, lookup sql.IndexLookup) sql.IndexedTable
IndexedAccess implements sql.IndexAddressableTable.
func (*Table) Inserter ¶
func (t *Table) Inserter(*sql.Context) sql.RowInserter
Inserter implements sql.InsertableTable.
func (*Table) ModifyColumn ¶
func (t *Table) ModifyColumn(ctx *sql.Context, columnName string, column *sql.Column, order *sql.ColumnOrder) error
ModifyColumn implements sql.AlterableTable.
func (*Table) ModifyComment ¶
ModifyComment implements sql.CommentAlterableTable.
func (*Table) PartitionRows ¶
PartitionRows implements sql.Table.
func (*Table) Partitions ¶
Partitions implements sql.Table.
func (*Table) PeekNextAutoIncrementValue ¶
PeekNextAutoIncrementValue implements sql.AutoIncrementTable.
func (*Table) PreciseMatch ¶
PreciseMatch implements sql.IndexAddressableTable.
func (*Table) PrimaryKeySchema ¶
func (t *Table) PrimaryKeySchema(_ *sql.Context) sql.PrimaryKeySchema
PrimaryKeySchema implements sql.PrimaryKeyTable.
func (*Table) RenameIndex ¶
RenameIndex implements sql.IndexAlterableTable.
func (*Table) Replacer ¶
func (t *Table) Replacer(*sql.Context) sql.RowReplacer
Replacer implements sql.ReplaceableTable.
Source Files
¶
- comment.go
- connpool.go
- constants.go
- database.go
- ducklake.go
- errors.go
- identifier.go
- index.go
- initial_data.go
- inserter.go
- internal_macro.go
- internal_schemas.go
- internal_tables.go
- internal_views.go
- mysql_rand.go
- mysql_random_bytes.go
- mysql_string_to_vector.go
- provider.go
- schema_summary.go
- sensitive_sql.go
- system_views.go
- table.go
- type_mapping.go