feat: 新增 SQLite3 虚拟表框架及方言扩展
- 新增 dialect/sqlite3/vtab 包,提供干净的虚拟表接口(Module/Table/Cursor) - 适配层自动将 BestIndex 约束与 Filter 值绑定(ConstraintInfo.Value),无需手动编解码 IdxStr - 支持 OpLIMIT/OpOFFSET 约束下推 - 新增 SupportsDistinct 方言选项,控制 SELECT 级和表达式级 DISTINCT 生成 - sqlite3 方言注册 IF() 函数支持
This commit is contained in:
@@ -178,6 +178,32 @@ func (t *sqlite3Test) TestCompileDropIfExists() {
|
||||
t.T().Log(sql)
|
||||
}
|
||||
|
||||
// HIDDEN 列(虚拟表参数列)
|
||||
func (t *sqlite3Test) TestCompileCreate_HiddenColumn() {
|
||||
bp := schema.NewBlueprint("api_users")
|
||||
bp.Create()
|
||||
|
||||
bp.BigIncrements("id").AutoIncrement()
|
||||
bp.String("name", 100).Nullable()
|
||||
bp.Integer("age")
|
||||
bp.String("token", 255).Hidden().Nullable()
|
||||
bp.Integer("page_size").Hidden().Nullable()
|
||||
|
||||
sql := t.schema.CompileCreate(bp)
|
||||
|
||||
t.Equal([]string{
|
||||
"CREATE TABLE IF NOT EXISTS `api_users` (\n" +
|
||||
"`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT\n" +
|
||||
"`name` varchar(100) NULL\n" +
|
||||
"`age` INTEGER(0) NOT NULL\n" +
|
||||
"`token` varchar(255) HIDDEN\n" +
|
||||
"`page_size` INTEGER(0) HIDDEN\n" +
|
||||
")",
|
||||
}, sql)
|
||||
|
||||
t.T().Log(sql)
|
||||
}
|
||||
|
||||
// 表重命名
|
||||
func (t *sqlite3Test) TestCompileRename() {
|
||||
bp := schema.NewBlueprint("users")
|
||||
|
||||
Reference in New Issue
Block a user