diff --git a/internal/compiler/parse_test.go b/internal/compiler/parse_test.go deleted file mode 100644 index 853b6425d0..0000000000 --- a/internal/compiler/parse_test.go +++ /dev/null @@ -1,104 +0,0 @@ -package compiler - -import ( - "fmt" - "strings" - "testing" - - "github.com/kyleconroy/sqlc/internal/config" - "github.com/kyleconroy/sqlc/internal/engine/dolphin" - "github.com/kyleconroy/sqlc/internal/engine/postgresql" - "github.com/kyleconroy/sqlc/internal/engine/sqlite" - "github.com/kyleconroy/sqlc/internal/opts" -) - -func Test_ParseQueryErrors(t *testing.T) { - for _, tc := range []struct { - name string - engine config.Engine - createStmt string - selectStmt string - parser Parser - wantErr error - }{ - { - name: "unreferenced order column postgresql", - engine: config.EnginePostgreSQL, - createStmt: `CREATE TABLE authors (id INT);`, - selectStmt: `SELECT id FROM authors ORDER BY foo;`, - parser: postgresql.NewParser(), - wantErr: fmt.Errorf(`column reference "foo" not found`), - }, - { - name: "unreferenced order column mysql", - engine: config.EngineMySQL, - createStmt: `CREATE TABLE authors (id INT);`, - selectStmt: `SELECT id FROM authors ORDER BY foo;`, - parser: dolphin.NewParser(), - wantErr: fmt.Errorf(`column reference "foo" not found`), - }, - { - name: "unreferenced order column sqlite", - engine: config.EngineSQLite, - createStmt: `CREATE TABLE authors (id INT);`, - selectStmt: `SELECT id FROM authors ORDER BY foo;`, - parser: sqlite.NewParser(), - wantErr: fmt.Errorf(`column reference "foo" not found`), - }, - { - name: "unreferenced group column postgresql", - engine: config.EnginePostgreSQL, - createStmt: `CREATE TABLE authors ( id INT );`, - selectStmt: `SELECT id FROM authors GROUP BY foo;`, - parser: postgresql.NewParser(), - wantErr: fmt.Errorf(`column reference "foo" not found`), - }, - { - name: "unreferenced group column mysql", - engine: config.EngineMySQL, - createStmt: `CREATE TABLE authors (id INT);`, - selectStmt: `SELECT id FROM authors GROUP BY foo;`, - parser: dolphin.NewParser(), - wantErr: fmt.Errorf(`column reference "foo" not found`), - }, - { - name: "unreferenced group column sqlite", - engine: config.EngineSQLite, - createStmt: `CREATE TABLE authors (id INT);`, - selectStmt: `SELECT id FROM authors GROUP BY foo;`, - parser: sqlite.NewParser(), - wantErr: fmt.Errorf(`column reference "foo" not found`), - }, - } { - t.Run(tc.name, func(t *testing.T) { - conf := config.SQL{ - Engine: tc.engine, - } - combo := config.CombinedSettings{} - comp := NewCompiler(conf, combo) - stmts, err := tc.parser.Parse(strings.NewReader(tc.createStmt)) - if err != nil { - t.Fatalf("cannot parse test catalog: %v", err) - } - err = comp.catalog.Update(stmts[0], comp) - if err != nil { - t.Fatalf("cannot update test catalog: %v", err) - } - stmts, err = tc.parser.Parse(strings.NewReader(tc.selectStmt)) - if err != nil { - t.Errorf("Parse failed: %v", err) - } - if len(stmts) != 1 { - t.Errorf("expected one statement, got %d", len(stmts)) - } - - _, err = comp.parseQuery(stmts[0].Raw, tc.selectStmt, opts.Parser{}) - if err == nil { - t.Fatalf("expected parseQuery to return an error, got nil") - } - if err.Error() != tc.wantErr.Error() { - t.Errorf("error message: want %s, got %s", tc.wantErr, err.Error()) - } - }) - } -} diff --git a/internal/endtoend/testdata/order_by_non_existing_column/mysql/query.sql b/internal/endtoend/testdata/order_by_non_existing_column/mysql/query.sql new file mode 100644 index 0000000000..b1a4b4f638 --- /dev/null +++ b/internal/endtoend/testdata/order_by_non_existing_column/mysql/query.sql @@ -0,0 +1,8 @@ +-- Example queries for sqlc +CREATE TABLE authors ( + id INT +); + +-- name: ListAuthors :many +SELECT id FROM authors +ORDER BY adfadsf; \ No newline at end of file diff --git a/internal/endtoend/testdata/order_by_non_existing_column/mysql/sqlc.yaml b/internal/endtoend/testdata/order_by_non_existing_column/mysql/sqlc.yaml new file mode 100644 index 0000000000..c4b3831631 --- /dev/null +++ b/internal/endtoend/testdata/order_by_non_existing_column/mysql/sqlc.yaml @@ -0,0 +1,7 @@ +version: 1 +packages: + - path: "go" + name: "querytest" + engine: "postgresql" + schema: "query.sql" + queries: "query.sql" \ No newline at end of file diff --git a/internal/endtoend/testdata/order_by_non_existing_column/mysql/stderr.txt b/internal/endtoend/testdata/order_by_non_existing_column/mysql/stderr.txt new file mode 100644 index 0000000000..a783df1baa --- /dev/null +++ b/internal/endtoend/testdata/order_by_non_existing_column/mysql/stderr.txt @@ -0,0 +1,2 @@ +# package querytest +query.sql:8:10: column reference "adfadsf" not found diff --git a/internal/endtoend/testdata/order_by_non_existing_column/sqlite/query.sql b/internal/endtoend/testdata/order_by_non_existing_column/sqlite/query.sql new file mode 100644 index 0000000000..b1a4b4f638 --- /dev/null +++ b/internal/endtoend/testdata/order_by_non_existing_column/sqlite/query.sql @@ -0,0 +1,8 @@ +-- Example queries for sqlc +CREATE TABLE authors ( + id INT +); + +-- name: ListAuthors :many +SELECT id FROM authors +ORDER BY adfadsf; \ No newline at end of file diff --git a/internal/endtoend/testdata/order_by_non_existing_column/sqlite/sqlc.yaml b/internal/endtoend/testdata/order_by_non_existing_column/sqlite/sqlc.yaml new file mode 100644 index 0000000000..c4b3831631 --- /dev/null +++ b/internal/endtoend/testdata/order_by_non_existing_column/sqlite/sqlc.yaml @@ -0,0 +1,7 @@ +version: 1 +packages: + - path: "go" + name: "querytest" + engine: "postgresql" + schema: "query.sql" + queries: "query.sql" \ No newline at end of file diff --git a/internal/endtoend/testdata/order_by_non_existing_column/sqlite/stderr.txt b/internal/endtoend/testdata/order_by_non_existing_column/sqlite/stderr.txt new file mode 100644 index 0000000000..a783df1baa --- /dev/null +++ b/internal/endtoend/testdata/order_by_non_existing_column/sqlite/stderr.txt @@ -0,0 +1,2 @@ +# package querytest +query.sql:8:10: column reference "adfadsf" not found