Skip to content

Commit 0254798

Browse files
anshal21Anshal
andauthored
[ Bug Fix ] Preserve DISTINCT keyword when it appears right after SELECT (#161)
Co-authored-by: Anshal <[email protected]>
1 parent 6274fc1 commit 0254798

File tree

52 files changed

+145
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+145
-1
lines changed

parser/ast.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5694,6 +5694,7 @@ type SelectQuery struct {
56945694
StatementEnd Pos
56955695
With *WithClause
56965696
Top *TopClause
5697+
HasDistinct bool
56975698
SelectItems []*SelectItem
56985699
From *FromClause
56995700
ArrayJoin *ArrayJoinClause
@@ -5735,6 +5736,9 @@ func (s *SelectQuery) String() string { // nolint: funlen
57355736
builder.WriteString(" ")
57365737
}
57375738
builder.WriteString("SELECT ")
5739+
if s.HasDistinct {
5740+
builder.WriteString("DISTINCT ")
5741+
}
57385742
if s.Top != nil {
57395743
builder.WriteString(s.Top.String())
57405744
builder.WriteString(" ")

parser/parser_query.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,7 @@ func (p *Parser) parseSelectStmt(pos Pos) (*SelectQuery, error) { // nolint: fun
834834
return nil, err
835835
}
836836
// DISTINCT?
837-
_ = p.tryConsumeKeywords(KeywordDistinct)
837+
hasDistinct := p.tryConsumeKeywords(KeywordDistinct)
838838

839839
top, err := p.tryParseTopClause(p.Pos())
840840
if err != nil {
@@ -961,6 +961,7 @@ func (p *Parser) parseSelectStmt(pos Pos) (*SelectQuery, error) { // nolint: fun
961961
SelectPos: pos,
962962
StatementEnd: statementEnd,
963963
Top: top,
964+
HasDistinct: hasDistinct,
964965
SelectItems: selectItems,
965966
From: from,
966967
ArrayJoin: arrayJoin,

parser/testdata/ddl/output/bug_001.sql.golden.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
"StatementEnd": 635,
5858
"With": null,
5959
"Top": null,
60+
"HasDistinct": false,
6061
"SelectItems": [
6162
{
6263
"Expr": {

parser/testdata/ddl/output/create_live_view_basic.sql.golden.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@
8282
"StatementEnd": 101,
8383
"With": null,
8484
"Top": null,
85+
"HasDistinct": false,
8586
"SelectItems": [
8687
{
8788
"Expr": {

parser/testdata/ddl/output/create_materialized_view_basic.sql.golden.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@
254254
"StatementEnd": 537,
255255
"With": null,
256256
"Top": null,
257+
"HasDistinct": false,
257258
"SelectItems": [
258259
{
259260
"Expr": {

parser/testdata/ddl/output/create_materialized_view_with_definer.sql.golden.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@
180180
"StatementEnd": 355,
181181
"With": null,
182182
"Top": null,
183+
"HasDistinct": false,
183184
"SelectItems": [
184185
{
185186
"Expr": {

parser/testdata/ddl/output/create_materialized_view_with_empty_table_schema.sql.golden.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@
151151
"StatementEnd": 460,
152152
"With": null,
153153
"Top": null,
154+
"HasDistinct": false,
154155
"SelectItems": [
155156
{
156157
"Expr": {
@@ -245,6 +246,7 @@
245246
"StatementEnd": 433,
246247
"With": null,
247248
"Top": null,
249+
"HasDistinct": false,
248250
"SelectItems": [
249251
{
250252
"Expr": {

parser/testdata/ddl/output/create_materialized_view_with_refresh.sql.golden.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@
147147
"StatementEnd": 302,
148148
"With": null,
149149
"Top": null,
150+
"HasDistinct": false,
150151
"SelectItems": [
151152
{
152153
"Expr": {

parser/testdata/ddl/output/create_mv_with_not_op.sql.golden.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@
254254
"StatementEnd": 559,
255255
"With": null,
256256
"Top": null,
257+
"HasDistinct": false,
257258
"SelectItems": [
258259
{
259260
"Expr": {

parser/testdata/ddl/output/create_mv_with_order_by.sql.golden.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
"StatementEnd": 135,
104104
"With": null,
105105
"Top": null,
106+
"HasDistinct": false,
106107
"SelectItems": [
107108
{
108109
"Expr": {
@@ -233,6 +234,7 @@
233234
"StatementEnd": 259,
234235
"With": null,
235236
"Top": null,
237+
"HasDistinct": false,
236238
"SelectItems": [
237239
{
238240
"Expr": {

0 commit comments

Comments
 (0)