feat: 完善扫描器、exec 及 schema 相关功能
- exec/scanner: 用 *interface{} 替换 **json.RawMessage 扫描目标,兼容 DuckDB 返回 map[string]interface{} 的场景;新增 toJSONRawMessage 转换函数
- exec/scanner: ScanVal 支持结构体指针,通过 JSON 中间层转换(DuckDB STRUCT 列)
- exec/scanner: 将 *sql.RawBytes 和 *[]byte 的处理从 ScanValContext 移入 scanner.ScanVal
- exec/query_executor: 简化 ScanValContext,移除私有 scan 方法
- exec: 补充 scanner 级别 ScanVal 测试用例
- internal/util/reflect: 重写 SafeSetVarValue,修复非指针 src 及 nil 指针字段的 panic
- internal/util/column_map: 恢复非匿名带标签结构体字段的展开逻辑
- schema: 新增 vector 列类型支持
- engine: 补充 DuckDB 相关配置
- dialect/sqlite3/vtab: 完善虚拟表适配器
- 各方言测试改用 sqlmock 虚拟连接
This commit is contained in:
@@ -41,8 +41,9 @@ func Example_createTable() {
|
||||
}
|
||||
|
||||
// Output:
|
||||
// CREATE TABLE "users" (
|
||||
// "id" BIGSERIAL NOT NULL PRIMARY KEY,
|
||||
// CREATE SEQUENCE IF NOT EXISTS "users_id_seq"
|
||||
// CREATE TABLE IF NOT EXISTS "users" (
|
||||
// "id" BIGINT DEFAULT nextval('users_id_seq') PRIMARY KEY,
|
||||
// "name" VARCHAR(50) NOT NULL,
|
||||
// "email" VARCHAR(100) NOT NULL,
|
||||
// "age" INTEGER NULL,
|
||||
@@ -50,6 +51,13 @@ func Example_createTable() {
|
||||
// "created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
// "updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
// )
|
||||
// COMMENT ON COLUMN "users"."id" IS '用户ID'
|
||||
// COMMENT ON COLUMN "users"."name" IS '用户名'
|
||||
// COMMENT ON COLUMN "users"."email" IS '邮箱'
|
||||
// COMMENT ON COLUMN "users"."age" IS '年龄'
|
||||
// COMMENT ON COLUMN "users"."active" IS '是否激活'
|
||||
// COMMENT ON COLUMN "users"."created_at" IS '创建时间'
|
||||
// COMMENT ON COLUMN "users"."updated_at" IS '更新时间'
|
||||
}
|
||||
|
||||
func Example_addColumn() {
|
||||
@@ -75,6 +83,8 @@ func Example_addColumn() {
|
||||
// ALTER TABLE "users"
|
||||
// ADD COLUMN "phone" VARCHAR(20) NULL,
|
||||
// ADD COLUMN "address" TEXT NULL
|
||||
// COMMENT ON COLUMN "users"."phone" IS '电话号码'
|
||||
// COMMENT ON COLUMN "users"."address" IS '地址'
|
||||
}
|
||||
|
||||
func Example_dropColumn() {
|
||||
|
||||
Reference in New Issue
Block a user