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`
是不被允许的。