File tree 4 files changed +25
-7
lines changed
endtoend/testdata/syntax_errors/postgresql
4 files changed +25
-7
lines changed Original file line number Diff line number Diff line change @@ -14,7 +14,7 @@ require (
14
14
github.com/jinzhu/inflection v1.0.0
15
15
github.com/lib/pq v1.10.9
16
16
github.com/mattn/go-sqlite3 v1.14.16
17
- github.com/pganalyze/pg_query_go/v4 v4.2.0
17
+ github.com/pganalyze/pg_query_go/v4 v4.2.1
18
18
github.com/riza-io/grpc-go v0.2.0
19
19
github.com/spf13/cobra v1.7.0
20
20
github.com/spf13/pflag v1.0.5
Original file line number Diff line number Diff line change @@ -118,8 +118,8 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky
118
118
github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y =
119
119
github.com/mattn/go-sqlite3 v1.14.16 /go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg =
120
120
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs =
121
- github.com/pganalyze/pg_query_go/v4 v4.2.0 h1:67hSBZXYfABNYisEu/Xfu6R2gupnQwaoRhQicy0HSnQ =
122
- github.com/pganalyze/pg_query_go/v4 v4.2.0 /go.mod h1:aEkDNOXNM5j0YGzaAapwJ7LB3dLNj+bvbWcLv1hOVqA =
121
+ github.com/pganalyze/pg_query_go/v4 v4.2.1 h1:id/vuyIQccb9f6Yx3pzH5l4QYrxE3v6/m8RPlgMrprc =
122
+ github.com/pganalyze/pg_query_go/v4 v4.2.1 /go.mod h1:aEkDNOXNM5j0YGzaAapwJ7LB3dLNj+bvbWcLv1hOVqA =
123
123
github.com/pingcap/errors v0.11.0 /go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8 =
124
124
github.com/pingcap/errors v0.11.5-0.20210425183316-da1aaba5fb63 h1:+FZIDR/D97YOPik4N4lPDaUcLDF/EQPogxtlHB2ZZRM =
125
125
github.com/pingcap/errors v0.11.5-0.20210425183316-da1aaba5fb63 /go.mod h1:X2r9ueLEUZgtx2cIogM0v4Zj5uvvzhuuiu7Pn8HzMPg =
Original file line number Diff line number Diff line change 1
1
# package querytest
2
- query/from.sql:1:1 : syntax error at or near "from"
3
- query/select.sql:1:1 : syntax error at or near "select"
4
- query/typo.sql:1:1 : syntax error at or near "selectt"
2
+ query/from.sql:2:35 : syntax error at or near "from"
3
+ query/select.sql:2:29 : syntax error at or near "select"
4
+ query/typo.sql:2:2 : syntax error at or near "selectt"
Original file line number Diff line number Diff line change @@ -10,9 +10,11 @@ import (
10
10
"strings"
11
11
12
12
nodes "github.com/pganalyze/pg_query_go/v4"
13
+ "github.com/pganalyze/pg_query_go/v4/parser"
13
14
14
15
"github.com/kyleconroy/sqlc/internal/metadata"
15
16
"github.com/kyleconroy/sqlc/internal/sql/ast"
17
+ "github.com/kyleconroy/sqlc/internal/sql/sqlerr"
16
18
)
17
19
18
20
func stringSlice (list * nodes.List ) []string {
@@ -158,7 +160,8 @@ func (p *Parser) Parse(r io.Reader) ([]ast.Statement, error) {
158
160
}
159
161
tree , err := nodes .Parse (string (contents ))
160
162
if err != nil {
161
- return nil , err
163
+ pErr := normalizeErr (err )
164
+ return nil , pErr
162
165
}
163
166
164
167
var stmts []ast.Statement
@@ -184,6 +187,21 @@ func (p *Parser) Parse(r io.Reader) ([]ast.Statement, error) {
184
187
return stmts , nil
185
188
}
186
189
190
+ func normalizeErr (err error ) error {
191
+ //TODO: errors.As complains that *parser.Error does not implement error
192
+ if pErr , ok := err .(* parser.Error ); ok {
193
+ sErr := & sqlerr.Error {
194
+ Message : pErr .Message ,
195
+ //Err: pErr,
196
+ Line : pErr .Lineno ,
197
+ Location : pErr .Cursorpos ,
198
+ }
199
+ return sErr
200
+ }
201
+
202
+ return err
203
+ }
204
+
187
205
// https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-COMMENTS
188
206
func (p * Parser ) CommentSyntax () metadata.CommentSyntax {
189
207
return metadata.CommentSyntax {
You can’t perform that action at this time.
0 commit comments