From 3ccee3348d2ecf802d60caab863a14618b1dfb82 Mon Sep 17 00:00:00 2001 From: Dominik Braun Date: Mon, 16 Dec 2019 00:38:32 +0100 Subject: [PATCH 1/6] returning errors instead of nil --- internal/dinosql/parser.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/dinosql/parser.go b/internal/dinosql/parser.go index 0dc44735b4..01a0fb9706 100644 --- a/internal/dinosql/parser.go +++ b/internal/dinosql/parser.go @@ -371,7 +371,7 @@ func parseQuery(c core.Catalog, stmt nodes.Node, source string) (*Query, error) } raw, ok := stmt.(nodes.RawStmt) if !ok { - return nil, nil + return nil, errors.New("node is not a statement") } switch n := raw.Stmt.(type) { case nodes.SelectStmt: @@ -382,7 +382,7 @@ func parseQuery(c core.Catalog, stmt nodes.Node, source string) (*Query, error) } case nodes.UpdateStmt: default: - return nil, nil + return nil, fmt.Errorf("parseQuery: unsupported statement type: %T", n) } rawSQL, err := pluckQuery(source, raw) From 9007e5e5292a0ae93f3b2bb85941b4590f2d723d Mon Sep 17 00:00:00 2001 From: Dominik Braun Date: Mon, 16 Dec 2019 16:07:28 +0100 Subject: [PATCH 2/6] don' allow equal `queries` and `schema` paths --- internal/cmd/cmd.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/internal/cmd/cmd.go b/internal/cmd/cmd.go index 8fafb070ec..d8a429b61e 100644 --- a/internal/cmd/cmd.go +++ b/internal/cmd/cmd.go @@ -127,6 +127,11 @@ var genCmd = &cobra.Command{ output := map[string]string{} for i, pkg := range settings.Packages { + if pkg.Schema == pkg.Queries { + fmt.Fprintf(os.Stderr, "package[%d]: schema and query path must not be identical\n", i) + os.Exit(1) + } + name := pkg.Name if pkg.Path == "" { From 4de79f1dcf7512da9deb48ad673a7e817c1d97da Mon Sep 17 00:00:00 2001 From: Dominik Braun Date: Mon, 16 Dec 2019 16:09:35 +0100 Subject: [PATCH 3/6] Revert "don' allow equal `queries` and `schema` paths" This reverts commit 9007e5e5 --- internal/cmd/cmd.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/internal/cmd/cmd.go b/internal/cmd/cmd.go index d8a429b61e..8fafb070ec 100644 --- a/internal/cmd/cmd.go +++ b/internal/cmd/cmd.go @@ -127,11 +127,6 @@ var genCmd = &cobra.Command{ output := map[string]string{} for i, pkg := range settings.Packages { - if pkg.Schema == pkg.Queries { - fmt.Fprintf(os.Stderr, "package[%d]: schema and query path must not be identical\n", i) - os.Exit(1) - } - name := pkg.Name if pkg.Path == "" { From 623f7d3aefe2e06e74e62664d134dc211d275f02 Mon Sep 17 00:00:00 2001 From: Dominik Braun Date: Mon, 16 Dec 2019 19:09:02 +0100 Subject: [PATCH 4/6] asking user to open a GitHub issue --- internal/dinosql/parser.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/dinosql/parser.go b/internal/dinosql/parser.go index 01a0fb9706..3fb22d2f0f 100644 --- a/internal/dinosql/parser.go +++ b/internal/dinosql/parser.go @@ -371,7 +371,7 @@ func parseQuery(c core.Catalog, stmt nodes.Node, source string) (*Query, error) } raw, ok := stmt.(nodes.RawStmt) if !ok { - return nil, errors.New("node is not a statement") + return nil, errors.New("node is not a statement - feel free to file an issue on GitHub") } switch n := raw.Stmt.(type) { case nodes.SelectStmt: @@ -382,7 +382,7 @@ func parseQuery(c core.Catalog, stmt nodes.Node, source string) (*Query, error) } case nodes.UpdateStmt: default: - return nil, fmt.Errorf("parseQuery: unsupported statement type: %T", n) + return nil, fmt.Errorf("parseQuery: unsupported statement type: %T - feel free to file an issue on GitHub", n) } rawSQL, err := pluckQuery(source, raw) From 9b65e2250d96d4f17cc0d029692f5002d065f1ab Mon Sep 17 00:00:00 2001 From: Dominik Braun Date: Mon, 16 Dec 2019 20:25:26 +0100 Subject: [PATCH 5/6] removed notes for opening GitHub issues --- internal/dinosql/parser.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/dinosql/parser.go b/internal/dinosql/parser.go index 3fb22d2f0f..01a0fb9706 100644 --- a/internal/dinosql/parser.go +++ b/internal/dinosql/parser.go @@ -371,7 +371,7 @@ func parseQuery(c core.Catalog, stmt nodes.Node, source string) (*Query, error) } raw, ok := stmt.(nodes.RawStmt) if !ok { - return nil, errors.New("node is not a statement - feel free to file an issue on GitHub") + return nil, errors.New("node is not a statement") } switch n := raw.Stmt.(type) { case nodes.SelectStmt: @@ -382,7 +382,7 @@ func parseQuery(c core.Catalog, stmt nodes.Node, source string) (*Query, error) } case nodes.UpdateStmt: default: - return nil, fmt.Errorf("parseQuery: unsupported statement type: %T - feel free to file an issue on GitHub", n) + return nil, fmt.Errorf("parseQuery: unsupported statement type: %T", n) } rawSQL, err := pluckQuery(source, raw) From 5fc843796fdf3e8766528eb403f8d9d8302ca722 Mon Sep 17 00:00:00 2001 From: Dominik Braun Date: Wed, 18 Dec 2019 12:38:47 +0100 Subject: [PATCH 6/6] check if LimitCount and LimitOffset exist in query --- internal/dinosql/parser.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/dinosql/parser.go b/internal/dinosql/parser.go index d0e75532b3..51b83d1222 100644 --- a/internal/dinosql/parser.go +++ b/internal/dinosql/parser.go @@ -987,8 +987,12 @@ func (p *paramSearch) Visit(node nodes.Node) Visitor { p.parent = node case nodes.SelectStmt: - p.limitCount = n.LimitCount - p.limitOffset = n.LimitOffset + if n.LimitCount != nil { + p.limitCount = n.LimitCount + } + if n.LimitOffset != nil { + p.limitOffset = n.LimitOffset + } case nodes.TypeCast: p.parent = node