(t *testing.T)
| 28 | ) |
| 29 | |
| 30 | func TestBuildStatement(t *testing.T) { |
| 31 | timestamp, err := time.Parse(time.RFC3339Nano, "2020-03-30T22:54:44.834017+09:00") |
| 32 | if err != nil { |
| 33 | t.Fatalf("unexpected time parse error: %v", err) |
| 34 | } |
| 35 | |
| 36 | // valid tests |
| 37 | for _, test := range []struct { |
| 38 | desc string |
| 39 | input string |
| 40 | want Statement |
| 41 | skipLowerCase bool |
| 42 | }{ |
| 43 | { |
| 44 | desc: "SELECT statement", |
| 45 | input: "SELECT * FROM t1", |
| 46 | want: &SelectStatement{Query: "SELECT * FROM t1"}, |
| 47 | }, |
| 48 | { |
| 49 | desc: "SELECT statement in multiple lines", |
| 50 | input: "SELECT\n*\nFROM t1", |
| 51 | want: &SelectStatement{Query: "SELECT\n*\nFROM t1"}, |
| 52 | }, |
| 53 | { |
| 54 | desc: "SELECT statement with comment", |
| 55 | input: "SELECT 0x1/**/A", |
| 56 | want: &SelectStatement{Query: "SELECT 0x1/**/A"}, |
| 57 | }, |
| 58 | { |
| 59 | desc: "WITH statement", |
| 60 | input: "WITH sub AS (SELECT 1) SELECT * FROM sub", |
| 61 | want: &SelectStatement{Query: "WITH sub AS (SELECT 1) SELECT * FROM sub"}, |
| 62 | }, |
| 63 | { |
| 64 | // https://cloud.google.com/spanner/docs/query-syntax#statement-hints |
| 65 | desc: "SELECT statement with statement hint", |
| 66 | input: "@{USE_ADDITIONAL_PARALLELISM=TRUE} SELECT * FROM t1", |
| 67 | want: &SelectStatement{Query: "@{USE_ADDITIONAL_PARALLELISM=TRUE} SELECT * FROM t1"}, |
| 68 | }, |
| 69 | { |
| 70 | desc: "SELECT statement in parenthesis", |
| 71 | input: "(SELECT * FROM t1)", |
| 72 | want: &SelectStatement{Query: "(SELECT * FROM t1)"}, |
| 73 | }, |
| 74 | { |
| 75 | desc: "WITH statement in parenthesis", |
| 76 | input: "(WITH sub AS (SELECT 1) SELECT * FROM sub)", |
| 77 | want: &SelectStatement{Query: "(WITH sub AS (SELECT 1) SELECT * FROM sub)"}, |
| 78 | }, |
| 79 | { |
| 80 | desc: "SELECT statement in parenthesis with statement hint", |
| 81 | input: "@{USE_ADDITIONAL_PARALLELISM=TRUE} (SELECT * FROM t1)", |
| 82 | want: &SelectStatement{Query: "@{USE_ADDITIONAL_PARALLELISM=TRUE} (SELECT * FROM t1)"}, |
| 83 | }, |
| 84 | { |
| 85 | desc: "CREATE DATABASE statement", |
| 86 | input: "CREATE DATABASE d1", |
| 87 | want: &CreateDatabaseStatement{CreateStatement: "CREATE DATABASE d1"}, |
nothing calls this directly
no test coverage detected