Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
fix(engine/sqlite): added json_tree and json_each definitions
fix #1830
  • Loading branch information
orisano committed Aug 3, 2023
commit 411feee8385b1c800445292cb72c725202d3a08f
3 changes: 3 additions & 0 deletions internal/codegen/golang/result.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@ func buildStructs(req *plugin.CodeGenRequest) []Struct {
}
for _, table := range schema.Tables {
var tableName string
if table.Rel.Schema == "sqlc.hidden" {
continue
}
if schema.Name == req.Catalog.DefaultSchema {
tableName = table.Rel.Name
} else {
Expand Down
49 changes: 49 additions & 0 deletions internal/engine/sqlite/stdlib.go
Original file line number Diff line number Diff line change
Expand Up @@ -980,6 +980,55 @@ func defaultSchema(name string) *catalog.Schema {
},
ReturnType: &ast.TypeName{Name: "real"},
},
{
Name: "json_each",
Args: []*catalog.Argument{
{
Name: "json",
Type: &ast.TypeName{Name: "text"},
},
{
Name: "path",
Type: &ast.TypeName{Name: "text"},
Mode: ast.FuncParamVariadic,
},
},
ReturnType: &ast.TypeName{
Name: "json_tree",
},
},
{
Name: "json_tree",
Args: []*catalog.Argument{
{
Name: "json",
Type: &ast.TypeName{Name: "text"},
},
{
Name: "path",
Type: &ast.TypeName{Name: "text"},
Mode: ast.FuncParamVariadic,
},
},
ReturnType: &ast.TypeName{
Name: "json_tree",
},
},
}
s.Tables = []*catalog.Table{
{
Rel: &ast.TableName{Schema: "sqlc.hidden", Name: "json_tree"},
Columns: []*catalog.Column{
{Name: "key", Type: ast.TypeName{Name: "any"}},
{Name: "value", Type: ast.TypeName{Name: "any"}},
{Name: "type", Type: ast.TypeName{Name: "text"}},
{Name: "atom", Type: ast.TypeName{Name: "any"}},
{Name: "id", Type: ast.TypeName{Name: "integer"}},
{Name: "parent", Type: ast.TypeName{Name: "integer"}},
{Name: "fullkey", Type: ast.TypeName{Name: "integer"}},
{Name: "path", Type: ast.TypeName{Name: "text"}},
},
},
}
return s
}