Documentation
¶
Index ¶
- Variables
- func DecodePrecisionScale(typmod int) (precision, scale int32, ok bool)
- func GoDuckDBTypeNameToPostgresType(name string) (pt *pgtype.Type, precision, scale int32, fallback bool, err error)
- func InferDriverSchema(rows driver.Rows) (sql.Schema, error)
- func InferSchema(rows *stdsql.Rows) (sql.Schema, error)
- func PostgresTypeSize(oid uint32) int32
- func PostgresTypeToArrowType(p PostgresType) arrow.DataType
- type PostgresType
- func (p PostgresType) CollationCoercibility(ctx *sql.Context) (collation sql.CollationID, coercibility byte)
- func (p PostgresType) Compare(v1 interface{}, v2 interface{}) (int, error)
- func (p PostgresType) Convert(v interface{}) (interface{}, sql.ConvertInRange, error)
- func (p PostgresType) Encode(v any, buf []byte) ([]byte, error)
- func (p PostgresType) Equals(t sql.Type) bool
- func (p PostgresType) MaxTextResponseByteLength(_ *sql.Context) uint32
- func (p PostgresType) Promote() sql.Type
- func (p PostgresType) SQL(ctx *sql.Context, dest []byte, v interface{}) (sqltypes.Value, error)
- func (p PostgresType) String() string
- func (p PostgresType) Type() query.Type
- func (p PostgresType) ValueType() reflect.Type
- func (p PostgresType) Zero() interface{}
Constants ¶
This section is empty.
Variables ¶
View Source
var DefaultTypeMap *pgtype.Map
View Source
var DuckdbTypeToPostgresOID = map[duckdb.Type]uint32{ duckdb.TYPE_INVALID: pgtype.UnknownOID, duckdb.TYPE_BOOLEAN: pgtype.BoolOID, duckdb.TYPE_TINYINT: pgtype.Int2OID, duckdb.TYPE_SMALLINT: pgtype.Int2OID, duckdb.TYPE_INTEGER: pgtype.Int4OID, duckdb.TYPE_BIGINT: pgtype.Int8OID, duckdb.TYPE_UTINYINT: pgtype.Int2OID, duckdb.TYPE_USMALLINT: pgtype.Int4OID, duckdb.TYPE_UINTEGER: pgtype.Int8OID, duckdb.TYPE_UBIGINT: pgtype.NumericOID, duckdb.TYPE_FLOAT: pgtype.Float4OID, duckdb.TYPE_DOUBLE: pgtype.Float8OID, duckdb.TYPE_DECIMAL: pgtype.NumericOID, duckdb.TYPE_VARCHAR: pgtype.TextOID, duckdb.TYPE_BLOB: pgtype.ByteaOID, duckdb.TYPE_TIMESTAMP: pgtype.TimestampOID, duckdb.TYPE_DATE: pgtype.DateOID, duckdb.TYPE_TIME: pgtype.TimeOID, duckdb.TYPE_INTERVAL: pgtype.IntervalOID, duckdb.TYPE_HUGEINT: pgtype.NumericOID, duckdb.TYPE_UHUGEINT: pgtype.NumericOID, duckdb.TYPE_TIMESTAMP_S: pgtype.TimestampOID, duckdb.TYPE_TIMESTAMP_MS: pgtype.TimestampOID, duckdb.TYPE_TIMESTAMP_NS: pgtype.TimestampOID, duckdb.TYPE_ENUM: pgtype.TextOID, duckdb.TYPE_UUID: pgtype.UUIDOID, duckdb.TYPE_BIT: pgtype.BitOID, duckdb.TYPE_TIME_TZ: pgtype.TimetzOID, duckdb.TYPE_TIMESTAMP_TZ: pgtype.TimestamptzOID, duckdb.TYPE_ANY: pgtype.TextOID, duckdb.TYPE_VARINT: pgtype.NumericOID, }
View Source
var PostgresOIDToDuckDBTypeName = map[uint32]string{ pgtype.BoolOID: "BOOLEAN", pgtype.ByteaOID: "BLOB", pgtype.QCharOID: "UTINYINT", pgtype.Int2OID: "SMALLINT", pgtype.Int4OID: "INTEGER", pgtype.Int8OID: "BIGINT", pgtype.Float4OID: "FLOAT", pgtype.Float8OID: "DOUBLE", pgtype.NumericOID: "DECIMAL", pgtype.TextOID: "VARCHAR", pgtype.VarcharOID: "VARCHAR", pgtype.BPCharOID: "VARCHAR", pgtype.NameOID: "VARCHAR", pgtype.DateOID: "DATE", pgtype.TimeOID: "TIME", pgtype.TimetzOID: "TIMETZ", pgtype.TimestampOID: "TIMESTAMP", pgtype.TimestamptzOID: "TIMESTAMPTZ", pgtype.IntervalOID: "INTERVAL", pgtype.UUIDOID: "UUID", pgtype.BitOID: "BIT", pgtype.VarbitOID: "BIT", pgtype.JSONOID: "JSON", pgtype.JSONBOID: "JSON", pgtype.OIDOID: "UINTEGER", pgtype.XIDOID: "UINTEGER", pgtype.CIDOID: "UINTEGER", pgtype.TIDOID: "UBIGINT", pgtype.BoolArrayOID: "BOOLEAN[]", pgtype.QCharArrayOID: "TINYINT[]", pgtype.Int2ArrayOID: "SMALLINT[]", pgtype.Int4ArrayOID: "INTEGER[]", pgtype.Int8ArrayOID: "BIGINT[]", pgtype.Float4ArrayOID: "FLOAT[]", pgtype.Float8ArrayOID: "DOUBLE[]", pgtype.NumericArrayOID: "DECIMAL[]", pgtype.TextArrayOID: "VARCHAR[]", pgtype.VarcharArrayOID: "VARCHAR[]", pgtype.BPCharArrayOID: "VARCHAR[]", pgtype.NameArrayOID: "VARCHAR[]", pgtype.UUIDArrayOID: "UUID[]", pgtype.DateArrayOID: "DATE[]", pgtype.TimeArrayOID: "TIME[]", pgtype.TimetzArrayOID: "TIMETZ[]", pgtype.TimestampArrayOID: "TIMESTAMP[]", pgtype.TimestamptzArrayOID: "TIMESTAMPTZ[]", pgtype.IntervalArrayOID: "INTERVAL[]", pgtype.JSONArrayOID: "JSON[]", pgtype.JSONBArrayOID: "JSON[]", pgtype.BitArrayOID: "BIT[]", }
Functions ¶
func DecodePrecisionScale ¶
func GoDuckDBTypeNameToPostgresType ¶
func GoDuckDBTypeNameToPostgresType(name string) (pt *pgtype.Type, precision, scale int32, fallback bool, err error)
GoDuckDBTypeNameToPostgresType parses a type name reported by the go-duckdb driver into a corresponding pgtype.Type with its precision and scale (if applicable). Unknown types are fallback to text.
TODO(fan): Make this function more rigorous for nested types.
func PostgresTypeSize ¶
func PostgresTypeToArrowType ¶
func PostgresTypeToArrowType(p PostgresType) arrow.DataType
Types ¶
type PostgresType ¶
type PostgresType struct {
PG *pgtype.Type
Precision int32
Scale int32
// https://www.postgresql.org/docs/current/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-ROWDESCRIPTION
Size int32
// Fallback indicates that the type is not supported by the pgtype package and is approximated to the `text` fallback type.
Fallback bool
}
func NewPostgresType ¶
func (PostgresType) CollationCoercibility ¶
func (p PostgresType) CollationCoercibility(ctx *sql.Context) (collation sql.CollationID, coercibility byte)
func (PostgresType) Compare ¶
func (p PostgresType) Compare(v1 interface{}, v2 interface{}) (int, error)
func (PostgresType) Convert ¶
func (p PostgresType) Convert(v interface{}) (interface{}, sql.ConvertInRange, error)
func (PostgresType) MaxTextResponseByteLength ¶
func (p PostgresType) MaxTextResponseByteLength(_ *sql.Context) uint32
func (PostgresType) Promote ¶
func (p PostgresType) Promote() sql.Type
func (PostgresType) String ¶
func (p PostgresType) String() string
func (PostgresType) Type ¶
func (p PostgresType) Type() query.Type
func (PostgresType) ValueType ¶
func (p PostgresType) ValueType() reflect.Type
func (PostgresType) Zero ¶
func (p PostgresType) Zero() interface{}
Click to show internal directories.
Click to hide internal directories.