@@ -114,7 +114,7 @@ func deal_Fill (fill interface{}) (FillOption , interface{},bool) {
114
114
QUERY PARTITION
115
115
TOKEN TOKENIZERS MATCH LIKE MATCHPHRASE CONFIG CONFIGS CLUSTER
116
116
REPLICAS DETAIL DESTINATIONS
117
- SCHEMA INDEXES AUTO
117
+ SCHEMA INDEXES AUTO EXCEPT
118
118
%token <bool> DESC ASC
119
119
%token <str> COMMA SEMICOLON LPAREN RPAREN REGEX
120
120
%token <int> EQ NEQ LT LTE GT GTE DOT DOUBLECOLON NEQREGEX EQREGEX
@@ -159,7 +159,7 @@ func deal_Fill (fill interface{}) (FillOption , interface{},bool) {
159
159
%type <dataType> COLUMN_VAREF_TYPE
160
160
%type <sortfs> SORTFIELDS ORDER_CLAUSES
161
161
%type <sortf> SORTFIELD
162
- %type <dimens> GROUP_BY_CLAUSE DIMENSION_NAMES
162
+ %type <dimens> GROUP_BY_CLAUSE EXCEPT_CLAUSE DIMENSION_NAMES
163
163
%type <dimen> DIMENSION_NAME
164
164
%type <intSlice> OPTION_CLAUSES LIMIT_OFFSET_OPTION SLIMIT_SOFFSET_OPTION
165
165
%type <inter> FILL_CLAUSE FILLCONTENT
@@ -428,20 +428,21 @@ STATEMENT:
428
428
}
429
429
430
430
SELECT_STATEMENT:
431
- SELECT COLUMN_CLAUSES INTO_CLAUSE FROM_CLAUSE WHERE_CLAUSE GROUP_BY_CLAUSE FILL_CLAUSE ORDER_CLAUSES OPTION_CLAUSES TIME_ZONE
431
+ SELECT COLUMN_CLAUSES INTO_CLAUSE FROM_CLAUSE WHERE_CLAUSE GROUP_BY_CLAUSE EXCEPT_CLAUSE FILL_CLAUSE ORDER_CLAUSES OPTION_CLAUSES TIME_ZONE
432
432
{
433
433
stmt := &SelectStatement{}
434
434
stmt.Fields = $2
435
435
stmt.Sources = $4
436
436
stmt.Dimensions = $6
437
+ stmt.ExceptDimensions = $7
437
438
stmt.Condition = $5
438
- stmt.SortFields = $8
439
- stmt.Limit = $9 [0 ]
440
- stmt.Offset = $9 [1 ]
441
- stmt.SLimit = $9 [2 ]
442
- stmt.SOffset = $9 [3 ]
439
+ stmt.SortFields = $9
440
+ stmt.Limit = $10 [0 ]
441
+ stmt.Offset = $10 [1 ]
442
+ stmt.SLimit = $10 [2 ]
443
+ stmt.SOffset = $10 [3 ]
443
444
444
- tempfill,tempfillvalue,fillflag := deal_Fill($7 )
445
+ tempfill,tempfillvalue,fillflag := deal_Fill($8 )
445
446
if fillflag==false {
446
447
yylex.Error(" Invalid characters in fill" )
447
448
}else {
@@ -453,7 +454,7 @@ SELECT_STATEMENT:
453
454
stmt.IsRawQuery = false
454
455
}
455
456
})
456
- stmt.Location = $10
457
+ stmt.Location = $11
457
458
if len ($3 ) > 1{
458
459
yylex.Error (" into clause only support one measurement" )
459
460
}else if len ($3 ) == 1{
@@ -468,21 +469,22 @@ SELECT_STATEMENT:
468
469
}
469
470
$$ = stmt
470
471
}
471
- |SELECT HINT COLUMN_CLAUSES INTO_CLAUSE FROM_CLAUSE WHERE_CLAUSE GROUP_BY_CLAUSE FILL_CLAUSE ORDER_CLAUSES OPTION_CLAUSES TIME_ZONE
472
+ |SELECT HINT COLUMN_CLAUSES INTO_CLAUSE FROM_CLAUSE WHERE_CLAUSE GROUP_BY_CLAUSE EXCEPT_CLAUSE FILL_CLAUSE ORDER_CLAUSES OPTION_CLAUSES TIME_ZONE
472
473
{
473
474
stmt := &SelectStatement{}
474
475
stmt.Hints = $2
475
476
stmt.Fields = $3
476
477
stmt.Sources = $5
477
478
stmt.Dimensions = $7
479
+ stmt.ExceptDimensions = $8
478
480
stmt.Condition = $6
479
- stmt.SortFields = $9
480
- stmt.Limit = $10 [0 ]
481
- stmt.Offset = $10 [1 ]
482
- stmt.SLimit = $10 [2 ]
483
- stmt.SOffset = $10 [3 ]
481
+ stmt.SortFields = $10
482
+ stmt.Limit = $11 [0 ]
483
+ stmt.Offset = $11 [1 ]
484
+ stmt.SLimit = $11 [2 ]
485
+ stmt.SOffset = $11 [3 ]
484
486
485
- tempfill,tempfillvalue,fillflag := deal_Fill($8 )
487
+ tempfill,tempfillvalue,fillflag := deal_Fill($9 )
486
488
if fillflag==false {
487
489
yylex.Error(" Invalid characters in fill" )
488
490
}else {
@@ -494,7 +496,7 @@ SELECT_STATEMENT:
494
496
stmt.IsRawQuery = false
495
497
}
496
498
})
497
- stmt.Location = $11
499
+ stmt.Location = $12
498
500
if len ($4 ) > 1{
499
501
yylex.Error (" into clause only support one measurement" )
500
502
}else if len ($4 ) == 1{
@@ -509,19 +511,20 @@ SELECT_STATEMENT:
509
511
}
510
512
$$ = stmt
511
513
}
512
- |SELECT COLUMN_CLAUSES WHERE_CLAUSE GROUP_BY_CLAUSE FILL_CLAUSE ORDER_CLAUSES OPTION_CLAUSES TIME_ZONE
514
+ |SELECT COLUMN_CLAUSES WHERE_CLAUSE GROUP_BY_CLAUSE EXCEPT_CLAUSE FILL_CLAUSE ORDER_CLAUSES OPTION_CLAUSES TIME_ZONE
513
515
{
514
516
stmt := &SelectStatement{}
515
517
stmt.Fields = $2
516
518
stmt.Dimensions = $4
519
+ stmt.ExceptDimensions = $5
517
520
stmt.Condition = $3
518
- stmt.SortFields = $6
519
- stmt.Limit = $7 [0 ]
520
- stmt.Offset = $7 [1 ]
521
- stmt.SLimit = $7 [2 ]
522
- stmt.SOffset = $7 [3 ]
521
+ stmt.SortFields = $7
522
+ stmt.Limit = $8 [0 ]
523
+ stmt.Offset = $8 [1 ]
524
+ stmt.SLimit = $8 [2 ]
525
+ stmt.SOffset = $8 [3 ]
523
526
524
- tempfill,tempfillvalue,fillflag := deal_Fill($5 )
527
+ tempfill,tempfillvalue,fillflag := deal_Fill($6 )
525
528
if fillflag==false {
526
529
yylex.Error(" Invalid characters in fill" )
527
530
}else {
@@ -533,7 +536,7 @@ SELECT_STATEMENT:
533
536
stmt.IsRawQuery = false
534
537
}
535
538
})
536
- stmt.Location = $8
539
+ stmt.Location = $9
537
540
$$ = stmt
538
541
}
539
542
@@ -876,6 +879,16 @@ GROUP_BY_CLAUSE:
876
879
$$ = nil
877
880
}
878
881
882
+ EXCEPT_CLAUSE:
883
+ EXCEPT DIMENSION_NAMES
884
+ {
885
+ $$ = $2
886
+ }
887
+ |
888
+ {
889
+ $$ = nil
890
+ }
891
+
879
892
DIMENSION_NAMES:
880
893
DIMENSION_NAME
881
894
{
0 commit comments