Documentation
¶
Index ¶
- Constants
- func NewDuckDBPlugin() *engine.Plugin
- func Open(dsn string) gorm.Dialector
- type Dialector
- func (d Dialector) BindVarTo(writer clause.Writer, stmt *gorm.Statement, v any)
- func (d Dialector) ClauseBuilders() map[string]clause.ClauseBuilder
- func (d Dialector) DataTypeOf(field *schema.Field) string
- func (d Dialector) DefaultValueOf(field *schema.Field) clause.Expression
- func (d Dialector) Explain(sql string, vars ...any) string
- func (d Dialector) Initialize(db *gorm.DB) error
- func (d Dialector) Migrator(db *gorm.DB) gorm.Migrator
- func (d Dialector) Name() string
- func (d Dialector) QuoteTo(writer clause.Writer, str string)
- func (d Dialector) RollbackTo(tx *gorm.DB, name string) error
- func (d Dialector) SavePoint(tx *gorm.DB, name string) error
- type DuckDBMigrator
- type DuckDBPlugin
- func (p *DuckDBPlugin) AddRowReturningID(config *engine.PluginConfig, schema string, storageUnit string, ...) (int64, error)
- func (p *DuckDBPlugin) ConvertRawToRows(rows *sql.Rows) (*engine.GetRowsResult, error)
- func (p *DuckDBPlugin) DB(config *engine.PluginConfig) (*gorm.DB, error)
- func (p *DuckDBPlugin) FormTableName(schema string, storageUnit string) string
- func (p *DuckDBPlugin) FormatGeometryValue(rawBytes []byte, columnType string) string
- func (p *DuckDBPlugin) GetAllSchemasQuery() string
- func (p *DuckDBPlugin) GetColumnCodec(columnType string) gorm_plugin.ColumnCodec
- func (p *DuckDBPlugin) GetColumnConstraints(config *engine.PluginConfig, schema string, storageUnit string) (map[string]map[string]any, error)
- func (p *DuckDBPlugin) GetCreateTableQuery(db *gorm.DB, schema string, storageUnit string, columns []engine.Record) string
- func (p *DuckDBPlugin) GetCustomColumnTypeName(columnName string, defaultTypeName string) string
- func (p *DuckDBPlugin) GetDatabases(config *engine.PluginConfig) ([]string, error)
- func (p *DuckDBPlugin) GetForeignKeyRelationships(config *engine.PluginConfig, schema string, storageUnit string) (map[string]*engine.ForeignKeyRelationship, error)
- func (p *DuckDBPlugin) GetGraphQueryDB(db *gorm.DB, schema string) *gorm.DB
- func (p *DuckDBPlugin) GetLastInsertID(db *gorm.DB) (int64, error)
- func (p *DuckDBPlugin) GetMaxBulkInsertParameters() int
- func (p *DuckDBPlugin) GetPlaceholder(index int) string
- func (p *DuckDBPlugin) GetPrimaryKeyColQuery() string
- func (p *DuckDBPlugin) GetRowsOrderBy(db *gorm.DB, schema string, storageUnit string) string
- func (p *DuckDBPlugin) GetSSLStatus(config *engine.PluginConfig) (*engine.SSLStatus, error)
- func (p *DuckDBPlugin) GetStorageUnitExistsQuery() string
- func (p *DuckDBPlugin) GetSupportedOperators() map[string]string
- func (p *DuckDBPlugin) GetTableInfoQuery() string
- func (p *DuckDBPlugin) GetTableNameAndAttributes(rows *sql.Rows) (string, []engine.Record)
- func (p *DuckDBPlugin) HandleCustomDataType(value string, columnType string, isNullable bool) (any, bool, error)
- func (p *DuckDBPlugin) IsArrayType(columnType string) bool
- func (p *DuckDBPlugin) IsGeometryType(columnType string) bool
- func (p *DuckDBPlugin) MarkGeneratedColumns(config *engine.PluginConfig, schema string, storageUnit string, ...) error
- func (p *DuckDBPlugin) NormalizeType(typeName string) string
- func (p *DuckDBPlugin) RawExecute(config *engine.PluginConfig, query string, params ...any) (*engine.GetRowsResult, error)
- func (p *DuckDBPlugin) ResolveGraphSchema(config *engine.PluginConfig, schema string) string
- func (p *DuckDBPlugin) ShouldCheckRowsAffected() bool
Constants ¶
const DriverName = "duckdb"
Variables ¶
This section is empty.
Functions ¶
func NewDuckDBPlugin ¶
NewDuckDBPlugin creates a new DuckDB plugin instance.
Types ¶
type Dialector ¶
Dialector implements gorm.Dialector for DuckDB.
func (Dialector) ClauseBuilders ¶
func (d Dialector) ClauseBuilders() map[string]clause.ClauseBuilder
func (Dialector) DefaultValueOf ¶
func (d Dialector) DefaultValueOf(field *schema.Field) clause.Expression
type DuckDBMigrator ¶
DuckDBMigrator wraps GORM's base migrator with DuckDB-specific overrides.
func (DuckDBMigrator) ColumnTypes ¶
func (m DuckDBMigrator) ColumnTypes(value any) ([]gorm.ColumnType, error)
ColumnTypes queries information_schema.columns for accurate column metadata. The value may be a schema-qualified name like "main.orders" from FormTableName.
type DuckDBPlugin ¶
type DuckDBPlugin struct {
gorm_plugin.GormPlugin
}
DuckDBPlugin implements the WhoDB plugin for DuckDB.
func (*DuckDBPlugin) AddRowReturningID ¶
func (p *DuckDBPlugin) AddRowReturningID(config *engine.PluginConfig, schema string, storageUnit string, values []engine.Record) (int64, error)
AddRowReturningID overrides the base implementation to use INSERT ... RETURNING, since DuckDB has no lastval() or last_insert_rowid() function.
func (*DuckDBPlugin) ConvertRawToRows ¶
func (p *DuckDBPlugin) ConvertRawToRows(rows *sql.Rows) (*engine.GetRowsResult, error)
ConvertRawToRows overrides the base to check rows.Err() after iteration. The go-duckdb driver can fail during rows.Next() for unsupported types, and the base implementation does not check rows.Err().
func (*DuckDBPlugin) DB ¶
func (p *DuckDBPlugin) DB(config *engine.PluginConfig) (*gorm.DB, error)
func (*DuckDBPlugin) FormTableName ¶
func (p *DuckDBPlugin) FormTableName(schema string, storageUnit string) string
func (*DuckDBPlugin) FormatGeometryValue ¶
func (p *DuckDBPlugin) FormatGeometryValue(rawBytes []byte, columnType string) string
func (*DuckDBPlugin) GetAllSchemasQuery ¶
func (p *DuckDBPlugin) GetAllSchemasQuery() string
func (*DuckDBPlugin) GetColumnCodec ¶
func (p *DuckDBPlugin) GetColumnCodec(columnType string) gorm_plugin.ColumnCodec
GetColumnCodec returns a generic codec for DuckDB row scanning.
func (*DuckDBPlugin) GetColumnConstraints ¶
func (p *DuckDBPlugin) GetColumnConstraints(config *engine.PluginConfig, schema string, storageUnit string) (map[string]map[string]any, error)
GetColumnConstraints retrieves column constraints for DuckDB tables.
func (*DuckDBPlugin) GetCreateTableQuery ¶
func (p *DuckDBPlugin) GetCreateTableQuery(db *gorm.DB, schema string, storageUnit string, columns []engine.Record) string
GetCreateTableQuery builds a CREATE TABLE statement for DuckDB. For integer PK columns, it creates a sequence and uses DEFAULT nextval().
func (*DuckDBPlugin) GetCustomColumnTypeName ¶
func (p *DuckDBPlugin) GetCustomColumnTypeName(columnName string, defaultTypeName string) string
func (*DuckDBPlugin) GetDatabases ¶
func (p *DuckDBPlugin) GetDatabases(config *engine.PluginConfig) ([]string, error)
func (*DuckDBPlugin) GetForeignKeyRelationships ¶
func (p *DuckDBPlugin) GetForeignKeyRelationships(config *engine.PluginConfig, schema string, storageUnit string) (map[string]*engine.ForeignKeyRelationship, error)
GetForeignKeyRelationships uses duckdb_constraints() instead of information_schema because DuckDB does not populate constraint_column_usage for foreign keys.
func (*DuckDBPlugin) GetGraphQueryDB ¶
func (*DuckDBPlugin) GetLastInsertID ¶
func (p *DuckDBPlugin) GetLastInsertID(db *gorm.DB) (int64, error)
GetLastInsertID returns 0 for DuckDB — DuckDB has no session-scoped lastval(). The actual ID retrieval is handled by AddRowReturningID using INSERT ... RETURNING.
func (*DuckDBPlugin) GetMaxBulkInsertParameters ¶
func (p *DuckDBPlugin) GetMaxBulkInsertParameters() int
func (*DuckDBPlugin) GetPlaceholder ¶
func (p *DuckDBPlugin) GetPlaceholder(index int) string
func (*DuckDBPlugin) GetPrimaryKeyColQuery ¶
func (p *DuckDBPlugin) GetPrimaryKeyColQuery() string
func (*DuckDBPlugin) GetRowsOrderBy ¶
func (*DuckDBPlugin) GetSSLStatus ¶
func (p *DuckDBPlugin) GetSSLStatus(config *engine.PluginConfig) (*engine.SSLStatus, error)
GetSSLStatus returns nil for DuckDB as it's a local file-based database that doesn't use network connections or SSL/TLS.
func (*DuckDBPlugin) GetStorageUnitExistsQuery ¶
func (p *DuckDBPlugin) GetStorageUnitExistsQuery() string
func (*DuckDBPlugin) GetSupportedOperators ¶
func (p *DuckDBPlugin) GetSupportedOperators() map[string]string
func (*DuckDBPlugin) GetTableInfoQuery ¶
func (p *DuckDBPlugin) GetTableInfoQuery() string
func (*DuckDBPlugin) GetTableNameAndAttributes ¶
func (*DuckDBPlugin) HandleCustomDataType ¶
func (p *DuckDBPlugin) HandleCustomDataType(value string, columnType string, isNullable bool) (any, bool, error)
HandleCustomDataType converts string values back to DuckDB-compatible types for writes. This ensures values round-trip correctly (display → edit → save).
func (*DuckDBPlugin) IsArrayType ¶
func (p *DuckDBPlugin) IsArrayType(columnType string) bool
func (*DuckDBPlugin) IsGeometryType ¶
func (p *DuckDBPlugin) IsGeometryType(columnType string) bool
func (*DuckDBPlugin) MarkGeneratedColumns ¶
func (p *DuckDBPlugin) MarkGeneratedColumns(config *engine.PluginConfig, schema string, storageUnit string, columns []engine.Column) error
func (*DuckDBPlugin) NormalizeType ¶
func (p *DuckDBPlugin) NormalizeType(typeName string) string
func (*DuckDBPlugin) RawExecute ¶
func (p *DuckDBPlugin) RawExecute(config *engine.PluginConfig, query string, params ...any) (*engine.GetRowsResult, error)
func (*DuckDBPlugin) ResolveGraphSchema ¶
func (p *DuckDBPlugin) ResolveGraphSchema(config *engine.PluginConfig, schema string) string
func (*DuckDBPlugin) ShouldCheckRowsAffected ¶
func (p *DuckDBPlugin) ShouldCheckRowsAffected() bool