This is an automated email from the ASF dual-hosted git repository.

rong pushed a commit to branch iotdb-1620
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/iotdb-1620 by this push:
     new 5cb092c  g4: ID
5cb092c is described below

commit 5cb092cbee265d89513c72d2daaae11fecc1edd2
Author: Steve Yurong Su <[email protected]>
AuthorDate: Wed Oct 6 16:01:56 2021 +0800

    g4: ID
---
 .../antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4   | 377 +++++++++------------
 .../Data-Concept/Data-Model-and-Terminology.md     |   4 +-
 .../Data-Concept/Data-Model-and-Terminology.md     |   4 +-
 3 files changed, 169 insertions(+), 216 deletions(-)

diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4 
b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4
index f9aaaef..14c5790 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4
@@ -24,9 +24,10 @@ singleStatement
     ;
 
 /*
- * According to The Definitive ANTLR 4 Reference, 11. Altering the Parse with 
Semantic Predicates, Altering the Parse with Semantic Predicates.
- * "It s a good idea to avoid embedding predicates in the parser when possible 
for efficiency and clarity reasons."
- * So if unnecessary, don't use embedding predicates.
+ * According to The Definitive ANTLR 4 Reference,
+ * 11. Altering the Parse with Semantic Predicates, Altering the Parse with 
Semantic Predicates.
+ * "It s a good idea to avoid embedding predicates in the parser when possible 
for efficiency and
+ * clarity reasons." So if unnecessary, don't use embedding predicates.
  */
 
 statement
@@ -41,8 +42,8 @@ statement
     | DELETE STORAGE GROUP prefixPath (COMMA prefixPath)* #deleteStorageGroup
     | SHOW METADATA #showMetadata // not support yet
     | DESCRIBE prefixPath #describePath // not support yet
-    | CREATE INDEX ON prefixPath whereClause? indexWithClause #createIndex 
//not support yet
-    | DROP INDEX indexName=ID ON prefixPath #dropIndex //not support yet
+    | CREATE INDEX ON prefixPath whereClause? indexWithClause #createIndex // 
not support yet
+    | DROP INDEX indexName=ID ON prefixPath #dropIndex // not support yet
     | MERGE #merge
     | FLUSH prefixPath? (COMMA prefixPath)* (booleanClause)?#flush
     | FULL MERGE #fullMerge
@@ -170,10 +171,10 @@ aliasClause
 
 attributeClauses
     : DATATYPE OPERATOR_EQ dataType (COMMA ENCODING OPERATOR_EQ encoding)?
-    (COMMA (COMPRESSOR | COMPRESSION) OPERATOR_EQ compressor)?
-    (COMMA property)*
-    tagClause?
-    attributeClause?
+      (COMMA (COMPRESSOR | COMPRESSION) OPERATOR_EQ compressor)?
+      (COMMA property)*
+      tagClause?
+      attributeClause?
     ;
 
 compressor
@@ -249,7 +250,6 @@ withoutNullClause
     : WITHOUT NULL (ALL | ANY)
     ;
 
-
 orderByTimeClause
     : ORDER BY TIME (DESC | ASC)?
     ;
@@ -297,11 +297,11 @@ groupByTimeClause
       (COMMA DURATION)?
       RR_BRACKET
     | GROUP BY LR_BRACKET
-            timeInterval
-            COMMA DURATION
-            (COMMA DURATION)?
-            RR_BRACKET
-            COMMA LEVEL OPERATOR_EQ INT
+      timeInterval
+      COMMA DURATION
+      (COMMA DURATION)?
+      RR_BRACKET
+      COMMA LEVEL OPERATOR_EQ INT
     ;
 
 groupByFillClause
@@ -310,7 +310,7 @@ groupByFillClause
       COMMA DURATION
       RR_BRACKET
       FILL LR_BRACKET typeClause (COMMA typeClause)* RR_BRACKET
-     ;
+   ;
 
 groupByLevelClause
     : GROUP BY LEVEL OPERATOR_EQ INT
@@ -352,7 +352,6 @@ indexPredicateClause
     | (suffixPath | fullPath) CONTAIN sequenceClause WITH TOLERANCE constant 
(CONCAT sequenceClause WITH TOLERANCE constant)*
     ;
 
-
 sequenceClause
     : LR_BRACKET constant (COMMA constant)* RR_BRACKET
     ;
@@ -449,25 +448,95 @@ suffixPath
 nodeName
     : ID STAR?
     | STAR
-    | DOUBLE_QUOTE_STRING_LITERAL
-    | DURATION
-    | encoding
-    | dataType
-    | dateExpression
-    | MINUS? (EXPONENT | INT)
+    | keyword
+    ;
+
+nodeNameWithoutStar
+    : ID
+    | keyword
+    ;
+
+dataType
+    : INT32 | INT64 | FLOAT | DOUBLE | BOOLEAN | TEXT
+    ;
+
+dateFormat
+    : DATETIME
+    | NOW LR_BRACKET RR_BRACKET
+    ;
+
+constant
+    : dateExpression
+    | NaN
+    | MINUS? realLiteral
+    | MINUS? INT
+    | stringLiteral
     | booleanClause
-    | CREATE
+    | NULL
+    ;
+
+booleanClause
+    : TRUE
+    | FALSE
+    ;
+
+dateExpression
+    : dateFormat ((PLUS | MINUS) DURATION)*
+    ;
+
+encoding
+    : PLAIN | DICTIONARY | RLE | DIFF | TS_2DIFF | GORILLA | REGULAR
+    ;
+
+realLiteral
+    : INT DOT (INT | EXPONENT)?
+    | DOT (INT|EXPONENT)
+    | EXPONENT
+    ;
+
+property
+    : name=ID OPERATOR_EQ value=propertyValue
+    ;
+
+loadFilesClause
+    : AUTOREGISTER OPERATOR_EQ booleanClause (COMMA loadFilesClause)?
+    | SGLEVEL OPERATOR_EQ INT (COMMA loadFilesClause)?
+    | VERIFY OPERATOR_EQ booleanClause (COMMA loadFilesClause)?
+    ;
+
+triggerEventClause
+    : (BEFORE | AFTER) INSERT
+    ;
+
+triggerAttributeClause
+    : WITH LR_BRACKET triggerAttribute (COMMA triggerAttribute)* RR_BRACKET
+    ;
+
+triggerAttribute
+    : key=stringLiteral OPERATOR_EQ value=stringLiteral
+    ;
+
+//============================
+// Start of the keywords list
+//============================
+
+keyword
+    : CREATE
     | INSERT
     | UPDATE
     | DELETE
     | SELECT
     | SHOW
+    | QUERY
+    | KILL
+    | PROCESSLIST
     | GRANT
     | INTO
     | SET
     | WHERE
     | FROM
     | TO
+    | ORDER
     | BY
     | DEVICE
     | CONFIGURATION
@@ -486,124 +555,41 @@ nodeName
     | TIMESTAMP
     | PROPERTY
     | WITH
+    | ROOT
     | DATATYPE
     | COMPRESSOR
     | STORAGE
     | GROUP
     | LABEL
+    | INT32
+    | INT64
+    | FLOAT
+    | DOUBLE
+    | BOOLEAN
+    | TEXT
+    | ENCODING
+    | PLAIN
+    | DICTIONARY
+    | RLE
+    | DIFF
+    | TS_2DIFF
+    | GORILLA
+    | REGULAR
+    | BITMAP
     | ADD
     | UPSERT
+    | ALIAS
     | VALUES
     | NOW
     | LINK
     | INDEX
     | USING
-    | ON
-    | DROP
-    | MERGE
-    | LIST
-    | USER
-    | PRIVILEGES
-    | ROLE
-    | ALL
-    | OF
-    | ALTER
-    | PASSWORD
-    | REVOKE
-    | LOAD
-    | WATERMARK_EMBEDDING
-    | UNSET
-    | TTL
-    | FLUSH
-    | TASK
-    | INFO
-    | VERSION
-    | REMOVE
-    | UNLOAD
-    | CHILD
-    | PATHS
-    | DEVICES
-    | COUNT
-    | NODES
-    | LEVEL
-    | LAST
-    | DISABLE
-    | ALIGN
-    | COMPRESSION
-    | TIME
-    | ATTRIBUTES
-    | TAGS
-    | RENAME
-    | FULL
-    | CLEAR
-    | CACHE
-    | SNAPSHOT
-    | FOR
-    | SCHEMA
     | TRACING
+    | ON
     | OFF
     | SYSTEM
     | READONLY
     | WRITABLE
-    | (ID | OPERATOR_IN)? LS_BRACKET INT? ID? RS_BRACKET? ID?
-    | compressor
-    | GLOBAL
-    | PARTITION
-    | DESC
-    | ASC
-    ;
-
-nodeNameWithoutStar
-    : ID
-    | DOUBLE_QUOTE_STRING_LITERAL
-    | DURATION
-    | encoding
-    | dataType
-    | dateExpression
-    | MINUS? ( EXPONENT | INT)
-    | booleanClause
-    | CREATE
-    | INSERT
-    | UPDATE
-    | DELETE
-    | SELECT
-    | SHOW
-    | GRANT
-    | INTO
-    | SET
-    | WHERE
-    | FROM
-    | TO
-    | BY
-    | DEVICE
-    | CONFIGURATION
-    | DESCRIBE
-    | SLIMIT
-    | LIMIT
-    | UNLINK
-    | OFFSET
-    | SOFFSET
-    | FILL
-    | LINEAR
-    | PREVIOUS
-    | PREVIOUSUNTILLAST
-    | METADATA
-    | TIMESERIES
-    | PROPERTY
-    | WITH
-    | DATATYPE
-    | COMPRESSOR
-    | STORAGE
-    | GROUP
-    | LABEL
-    | ADD
-    | UPSERT
-    | VALUES
-    | NOW
-    | LINK
-    | INDEX
-    | USING
-    | ON
     | DROP
     | MERGE
     | LIST
@@ -635,98 +621,64 @@ nodeNameWithoutStar
     | DISABLE
     | ALIGN
     | COMPRESSION
+    | TIME
     | ATTRIBUTES
     | TAGS
     | RENAME
+    | GLOBAL
     | FULL
     | CLEAR
     | CACHE
+    | TRUE
+    | FALSE
+    | UNCOMPRESSED
+    | SNAPPY
+    | GZIP
+    | LZO
+    | PAA
+    | PLA
+    | LZ4
+    | LATEST
+    | PARTITION
     | SNAPSHOT
     | FOR
     | SCHEMA
-    | TRACING
-    | OFF
-    | SYSTEM
-    | READONLY
-    | WRITABLE
-    | (ID | OPERATOR_IN)? LS_BRACKET INT? ID? RS_BRACKET? ID?
-    | compressor
-    | GLOBAL
-    | PARTITION
+    | AUTOREGISTER
+    | VERIFY
+    | SGLEVEL
+    | FUNCTION
+    | FUNCTIONS
+    | AS
+    | TRIGGER
+    | TRIGGERS
+    | BEFORE
+    | AFTER
+    | START
+    | STOP
     | DESC
     | ASC
+    | TOP
+    | CONTAIN
+    | CONCAT
+    | LIKE
+    | REGEXP
+    | TOLERANCE
+    | EXPLAIN
     | CONTINUOUS
+    | QUERIES
     | CQ
     | CQS
     | BEGIN
     | END
     | RESAMPLE
     | EVERY
-    ;
-
-dataType
-    : INT32 | INT64 | FLOAT | DOUBLE | BOOLEAN | TEXT
-    ;
-
-dateFormat
-    : DATETIME
-    | NOW LR_BRACKET RR_BRACKET
-    ;
-
-constant
-    : dateExpression
-    | NaN
-    | MINUS? realLiteral
-    | MINUS? INT
-    | stringLiteral
-    | booleanClause
+    | DEBUG
     | NULL
+    | WITHOUT
+    | ANY
+    | LOCK
     ;
 
-booleanClause
-    : TRUE
-    | FALSE
-    ;
-
-dateExpression
-    : dateFormat ((PLUS | MINUS) DURATION)*
-    ;
-
-encoding
-    : PLAIN | DICTIONARY | RLE | DIFF | TS_2DIFF | GORILLA | REGULAR
-    ;
-
-realLiteral
-    :   INT DOT (INT | EXPONENT)?
-    |   DOT  (INT|EXPONENT)
-    |   EXPONENT
-    ;
-
-property
-    : name=ID OPERATOR_EQ value=propertyValue
-    ;
-
-loadFilesClause
-    : AUTOREGISTER OPERATOR_EQ booleanClause (COMMA loadFilesClause)?
-    | SGLEVEL OPERATOR_EQ INT (COMMA loadFilesClause)?
-    | VERIFY OPERATOR_EQ booleanClause (COMMA loadFilesClause)?
-    ;
-
-triggerEventClause
-    : (BEFORE | AFTER) INSERT
-    ;
-
-triggerAttributeClause
-    : WITH LR_BRACKET triggerAttribute (COMMA triggerAttribute)* RR_BRACKET
-    ;
-
-triggerAttribute
-    : key=stringLiteral OPERATOR_EQ value=stringLiteral
-    ;
-
-//============================
-// Start of the keywords list
-//============================
 CREATE
     : C R E A T E
     ;
@@ -763,7 +715,6 @@ PROCESSLIST
     : P R O C E S S L I S T
     ;
 
-
 GRANT
     : G R A N T
     ;
@@ -1083,6 +1034,7 @@ VERSION
 REMOVE
     : R E M O V E
     ;
+
 UNLOAD
     : U N L O A D
     ;
@@ -1144,9 +1096,9 @@ RENAME
     ;
 
 GLOBAL
-  : G L O B A L
-  | G
-  ;
+    : G L O B A L
+    | G
+    ;
 
 FULL
     : F U L L
@@ -1189,12 +1141,12 @@ PAA
     ;
 
 PLA
-   : P L A
-   ;
+    : P L A
+    ;
 
 LZ4
-   : L Z '4' 
-   ;
+    : L Z '4'
+    ;
 
 LATEST
     : L A T E S T
@@ -1354,6 +1306,7 @@ LOCK
 //============================
 // End of the keywords list
 //============================
+
 COMMA : ',';
 
 STAR : '*' | '**';
@@ -1423,6 +1376,14 @@ stringLiteral
    | DOUBLE_QUOTE_STRING_LITERAL
    ;
 
+SINGLE_QUOTE_STRING_LITERAL
+    : '\'' ('\\' . | ~'\'' )*? '\''
+    ;
+
+DOUBLE_QUOTE_STRING_LITERAL
+    : '"' ('\\' . | ~'"' )*? '"'
+    ;
+
 INT : [0-9]+;
 
 EXPONENT : INT ('e'|'E') ('+'|'-')? INT ;
@@ -1465,14 +1426,6 @@ fragment CN_CHAR
     : '\u2E80'..'\u9FFF'
     ;
 
-DOUBLE_QUOTE_STRING_LITERAL
-    : '"' ('\\' . | ~'"' )*? '"'
-    ;
-
-SINGLE_QUOTE_STRING_LITERAL
-    : '\'' ('\\' . | ~'\'' )*? '\''
-    ;
-
 fragment A
     : 'a' | 'A'
     ;
diff --git a/docs/UserGuide/Data-Concept/Data-Model-and-Terminology.md 
b/docs/UserGuide/Data-Concept/Data-Model-and-Terminology.md
index cee30ce..d8a7b04 100644
--- a/docs/UserGuide/Data-Concept/Data-Model-and-Terminology.md
+++ b/docs/UserGuide/Data-Concept/Data-Model-and-Terminology.md
@@ -87,8 +87,8 @@ The following are the constraints on the layer (`layer_name`):
 
 * In addition to the beginning layer (`root`) of the time series and the 
storage group layer, other layers also support the use of special strings 
referenced by \` or `" ` as its name. It should be noted that the quoted string 
cannot contain `.` characters. Here are some legal examples:
 
-  * root.sg."select".""""."\$", which contains 5 layers: root, sg, select, "", 
\$
-  * root.sg.\`\`\`\`.\`from\`.\`\$\`, which contains 5 layers: root, sg, \`\`, 
from, \$
+  * root.sg.select."+-\`from\`".""""."\$", which contains 6 layers: root, sg, 
select, +-\`from\`, "", \$
+  * root.sg.\`\`\`\`.select.\`+="from"\`.\`\$\`, which contains 6 layers: 
root, sg, \`\`, select, +="from", \$
 
 * In particular, if the system is deployed on a Windows machine, the storage 
group layer name will be case-insensitive. For example, creating both `root.ln` 
and `root.LN` at the same time is not allowed.
 
diff --git a/docs/zh/UserGuide/Data-Concept/Data-Model-and-Terminology.md 
b/docs/zh/UserGuide/Data-Concept/Data-Model-and-Terminology.md
index 46e1938..3bbf694 100644
--- a/docs/zh/UserGuide/Data-Concept/Data-Model-and-Terminology.md
+++ b/docs/zh/UserGuide/Data-Concept/Data-Model-and-Terminology.md
@@ -86,8 +86,8 @@ layer_name : identifier
   * `"_","/","@","#","$","%","&","{","}"`
   * `"A"`到`"Z"`,`"a"`到`"z"`,`"0"`到`"9"`
 * 除了时间序列的开头的层级(`root`)和存储组层级外,层级还支持使用被  \`  或者 ` " ` 
符号引用的特殊字符串作为其名称。需要注意的是,被引用的字符串不可带有 `.` 字符。下面是一些合法的例子:
-  * root.sg."select".""""."\$",5 个层级分别为 root, sg, select, "", \$
-  * root.sg.\`\`\`\`.\`from\`.\`\$\`,5 个层级分别为 root, sg, \`\`, from, \$
+  * root.sg.select."+-\`from\`".""""."\$",6 个层级分别为 root, sg, select, 
+-\`\from`, "", \$
+  * root.sg.\`\`\`\`.select.\`+="from"\`.\`\$\`,6 个层级分别为 root, sg, \`\`, 
select, +-"from", \$
 
 * 特别地,如果系统在 Windows 系统上部署,那么存储组层级名称是大小写不敏感的。例如,同时创建`root.ln` 和 `root.LN` 
是不被允许的。
 

Reply via email to