| <!-- | |
| Licensed to the Apache Software Foundation (ASF) under one | |
| or more contributor license agreements. See the NOTICE file | |
| distributed with this work for additional information | |
| regarding copyright ownership. The ASF licenses this file | |
| to you under the Apache License, Version 2.0 (the | |
| "License"); you may not use this file except in compliance | |
| with the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, | |
| software distributed under the License is distributed on an | |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| KIND, either express or implied. See the License for the | |
| specific language governing permissions and limitations | |
| under the License. | |
| --> | |
| # Identifier | |
| ## Usage scenarios | |
| Certain objects within IoTDB, including `TRIGGER`, `FUNCTION`(UDF), `CONTINUOUS QUERY`, `SCHEMA TEMPLATE`, `USER`, `ROLE`,`Pipe`,`PipeSink`,`alias` and other object names are known as identifiers. | |
| ## Constraints | |
| Below are basic constraints of identifiers, specific identifiers may have other constraints, for example, `user` should consists of more than 4 characters. | |
| - Permitted characters in unquoted identifiers: | |
| - [0-9 a-z A-Z _ ] (letters, digits and underscore) | |
| - ['\u2E80'..'\u9FFF'] (UNICODE Chinese characters) | |
| - Identifiers may begin with a digit, unquoted identifiers can not be a real number. | |
| - Identifiers are case sensitive. | |
| - Key words can be used as an identifier. | |
| **You need to quote the identifier with back quote(`) in the following cases:** | |
| - Identifier contains special characters. | |
| - Identifier that is a real number. | |
| ## How to use quotations marks in quoted identifiers | |
| `'` and `"` can be used directly in quoted identifiers. | |
| ` may be written as `` in quoted identifiers. See the example below: | |
| ```sql | |
| # create template t1't"t | |
| create schema template `t1't"t` | |
| (temperature FLOAT encoding=RLE, status BOOLEAN encoding=PLAIN compression=SNAPPY) | |
| # create template t1`t | |
| create schema template `t1``t` | |
| (temperature FLOAT encoding=RLE, status BOOLEAN encoding=PLAIN compression=SNAPPY) | |
| ``` | |
| ## Examples | |
| Examples of case in which quoted identifier is used : | |
| - Trigger name should be quoted in cases described above : | |
| ```sql | |
| # create trigger named alert.`listener-sg1d1s1 | |
| CREATE TRIGGER `alert.``listener-sg1d1s1` | |
| AFTER INSERT | |
| ON root.sg1.d1.s1 | |
| AS 'org.apache.iotdb.db.storageengine.trigger.example.AlertListener' | |
| WITH ( | |
| 'lo' = '0', | |
| 'hi' = '100.0' | |
| ) | |
| ``` | |
| - UDF name should be quoted in cases described above : | |
| ```sql | |
| # create a funciton named 111, 111 is a real number. | |
| CREATE FUNCTION `111` AS 'org.apache.iotdb.udf.UDTFExample' | |
| ``` | |
| - Template name should be quoted in cases described above : | |
| ```sql | |
| # create a template named 111, 111 is a real number. | |
| create schema template `111` | |
| (temperature FLOAT encoding=RLE, status BOOLEAN encoding=PLAIN compression=SNAPPY) | |
| ``` | |
| - User and Role name should be quoted in cases described above, blank space is not allow in User and Role name whether quoted or not : | |
| ```sql | |
| # create user special`user. | |
| CREATE USER `special``user.` 'write_pwd' | |
| # create role 111 | |
| CREATE ROLE `111` | |
| ``` | |
| - Continuous query name should be quoted in cases described above : | |
| ```sql | |
| # create continuous query test.cq | |
| CREATE CONTINUOUS QUERY `test.cq` | |
| BEGIN | |
| SELECT max_value(temperature) | |
| INTO temperature_max | |
| FROM root.ln.*.* | |
| GROUP BY time(10s) | |
| END | |
| ``` | |
| - Pipe、PipeSink should be quoted in cases described above : | |
| ```sql | |
| # create PipeSink test.*1 | |
| CREATE PIPESINK `test.*1` AS IoTDB ('ip' = '输入你的IP') | |
| # create Pipe test.*2 | |
| CREATE PIPE `test.*2` TO `test.*1` FROM | |
| (select ** from root WHERE time>=yyyy-mm-dd HH:MM:SS) WITH 'SyncDelOp' = 'true' | |
| ``` | |
| - `AS` function provided by IoTDB can assign an alias to time series selected in query. Alias can be constant(including string) or identifier. | |
| ```sql | |
| select s1 as temperature, s2 as speed from root.ln.wf01.wt01; | |
| # Header of result dataset | |
| +-----------------------------+-----------|-----+ | |
| | Time|temperature|speed| | |
| +-----------------------------+-----------|-----+ | |
| ``` | |
| - The key/value of an attribute can be String Literal and identifier, more details can be found at **key-value pair** part. | |