diff --git a/internal/engine/dolphin/parse.go b/internal/engine/dolphin/parse.go index 7277710c9c..21f23ec18a 100644 --- a/internal/engine/dolphin/parse.go +++ b/internal/engine/dolphin/parse.go @@ -52,7 +52,14 @@ func (p *Parser) Parse(r io.Reader) ([]ast.Statement, error) { if err != nil { return nil, err } - stmtNodes, _, err := p.pingcap.Parse(string(blob), "", "") + sql := strings.ReplaceAll( + string(blob), + "utf8mb4_uca1400_ai_ci", + "utf8mb4_general_ci", +) + + stmtNodes, _, err := p.pingcap.Parse(sql, "", "") + if err != nil { return nil, normalizeErr(err) } diff --git a/internal/sql/rewrite/parameters_test.go b/internal/sql/rewrite/parameters_test.go new file mode 100644 index 0000000000..27bd099007 --- /dev/null +++ b/internal/sql/rewrite/parameters_test.go @@ -0,0 +1,39 @@ +package rewrite + +import ( + "strings" + "testing" + + "github.com/sqlc-dev/sqlc/internal/config" + "github.com/sqlc-dev/sqlc/internal/engine/postgresql" +) + +func TestNamedParametersInOrderBy(t *testing.T) { + query := ` +SELECT ID +FROM Sequence +WHERE SeriesID = sqlc.arg(series_id) +ORDER BY (Name = sqlc.arg(name)) DESC, ID +LIMIT 1; +` + + p := postgresql.NewParser() + + stmts, err := p.Parse(strings.NewReader(query)) + if err != nil { + t.Fatal(err) + } + +raw := stmts[0].Raw + +_, params, _ := NamedParameters( + config.EngineSQLite, + raw, + map[int]bool{}, + false, +) + +if params == nil { + t.Fatalf("params should not be nil") +} +}