Last active
May 17, 2017 00:53
-
-
Save stuartcarnie/82b04f27b454c5689bff59a8b3029776 to your computer and use it in GitHub Desktop.
EBNF for InfluxQL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// queries | |
query ::= statement ( ";" statement )* | |
statement ::= alter_retention_policy_stmt | | |
create_continuous_query_stmt | | |
create_database_stmt | | |
create_retention_policy_stmt | | |
create_subscription_stmt | | |
create_user_stmt | | |
delete_stmt | | |
drop_continuous_query_stmt | | |
drop_database_stmt | | |
drop_measurement_stmt | | |
drop_retention_policy_stmt | | |
drop_series_stmt | | |
drop_shard_stmt | | |
drop_subscription_stmt | | |
drop_user_stmt | | |
grant_stmt | | |
kill_query_statement | | |
show_continuous_queries_stmt | | |
show_databases_stmt | | |
show_field_keys_stmt | | |
show_grants_stmt | | |
show_measurements_stmt | | |
show_queries_stmt | | |
show_retention_policies | | |
show_series_stmt | | |
show_shard_groups_stmt | | |
show_shards_stmt | | |
show_subscriptions_stmt| | |
show_tag_keys_stmt | | |
show_tag_values_stmt | | |
show_users_stmt | | |
revoke_stmt | | |
select_stmt | |
// characters | |
newline ::= #x0A | |
unicode_char ::= /* an arbitrary Unicode code point except newline */ | |
// letters and digits | |
letter ::= ascii_letter | "_" | |
ascii_letter ::= [A-Za-z] | |
digit ::= [0-9] | |
// identifiers | |
identifier ::= unquoted_identifier | quoted_identifier | |
unquoted_identifier ::= letter ( letter | digit )* | |
quoted_identifier ::= '"' unicode_char unicode_char* '"' | |
// literals | |
int_lit ::= ( "+" | "-" )? [1-9] digit? | |
float_lit ::= ( "+" | "-" )? ( "." digit digit* | digit digit* "." digit* ) | |
string_lit ::= "'" unicode_char* "'" | |
// durations | |
duration_lit ::= int_lit duration_unit | |
duration_unit ::= "u" | "µ" | "ms" | "s" | "m" | "h" | "d" | "w" | |
// dates and times | |
time_lit ::= "2006-01-02 15:04:05.999999" | "2006-01-02" | |
// booleans | |
bool_lit ::= TRUE | FALSE | |
// regular expressions | |
regex_lit ::= "/" unicode_char* "/" | |
// statements | |
alter_retention_policy_stmt ::= "ALTER RETENTION POLICY" policy_name on_clause | |
retention_policy_option | |
retention_policy_option? | |
retention_policy_option? | |
retention_policy_option? | |
create_continuous_query_stmt ::= "CREATE CONTINUOUS QUERY" query_name on_clause | |
( "RESAMPLE" resample_opts )? | |
"BEGIN" select_stmt "END" | |
create_database_stmt ::= 'CREATE DATABASE' db_name | |
( 'WITH' ( ( retention_policy_duration? retention_policy_replication )? retention_policy_shard_group_duration )? retention_policy_name )? | |
create_retention_policy_stmt ::= "CREATE RETENTION POLICY" policy_name on_clause | |
retention_policy_duration | |
retention_policy_replication | |
retention_policy_shard_group_duration? | |
"DEFAULT"? | |
query_name ::= identifier | |
resample_opts ::= (every_stmt for_stmt | every_stmt | for_stmt) | |
every_stmt ::= "EVERY" duration_lit | |
for_stmt ::= "FOR" duration_lit | |
create_subscription_stmt ::= "CREATE SUBSCRIPTION" subscription_name "ON" db_name "." retention_policy "DESTINATIONS" ("ANY"|"ALL") host ( "," host )* | |
create_user_stmt ::= "CREATE USER" user_name "WITH PASSWORD" password "WITH ALL PRIVILEGES"? | |
delete_stmt ::= "DELETE" ( from_clause | where_clause | from_clause where_clause ) | |
drop_continuous_query_stmt ::= "DROP CONTINUOUS QUERY" query_name on_clause | |
drop_database_stmt ::= "DROP DATABASE" db_name | |
drop_measurement_stmt ::= "DROP MEASUREMENT" measurement | |
drop_retention_policy_stmt ::= "DROP RETENTION POLICY" policy_name on_clause | |
drop_series_stmt ::= "DROP SERIES" ( from_clause | where_clause | from_clause where_clause ) | |
drop_shard_stmt ::= "DROP SHARD" shard_id | |
drop_subscription_stmt ::= "DROP SUBSCRIPTION" subscription_name "ON" db_name "." retention_policy | |
drop_user_stmt ::= "DROP USER" user_name | |
grant_stmt ::= "GRANT" privilege on_clause? to_clause | |
kill_query_statement ::= "KILL QUERY" query_id | |
show_continuous_queries_stmt ::= "SHOW CONTINUOUS QUERIES" | |
show_databases_stmt ::= "SHOW DATABASES" | |
show_field_keys_stmt ::= "SHOW FIELD KEYS" from_clause? | |
show_grants_stmt ::= "SHOW GRANTS FOR" user_name | |
show_measurements_stmt ::= "SHOW MEASUREMENTS" with_measurement_clause? where_clause? limit_clause? offset_clause? | |
show_queries_stmt ::= "SHOW QUERIES" | |
show_retention_policies ::= "SHOW RETENTION POLICIES" on_clause | |
show_series_stmt ::= "SHOW SERIES" from_clause? where_clause? limit_clause? offset_clause? | |
show_shard_groups_stmt ::= "SHOW SHARD GROUPS" | |
show_shards_stmt ::= "SHOW SHARDS" | |
show_subscriptions_stmt ::= "SHOW SUBSCRIPTIONS" | |
show_tag_keys_stmt ::= "SHOW TAG KEYS" from_clause? where_clause? group_by_clause? limit_clause? offset_clause? | |
show_tag_values_stmt ::= "SHOW TAG VALUES" from_clause? with_tag_clause where_clause? group_by_clause? limit_clause? offset_clause? | |
show_users_stmt ::= "SHOW USERS" | |
revoke_stmt ::= "REVOKE" privilege on_clause? "FROM" user_name | |
select_stmt ::= "SELECT" fields from_clause into_clause? where_clause? | |
group_by_clause? order_by_clause? limit_clause? | |
offset_clause? slimit_clause? soffset_clause? | |
timezone_clause? | |
// clauses | |
from_clause ::= "FROM" measurements | |
group_by_clause ::= "GROUP BY" dimensions fill "(" fill_option ")" | |
into_clause ::= "INTO" ( measurement | back_ref ) | |
limit_clause ::= "LIMIT" int_lit | |
offset_clause ::= "OFFSET" int_lit | |
slimit_clause ::= "SLIMIT" int_lit | |
soffset_clause ::= "SOFFSET" int_lit | |
timezone_clause ::= tz "(" string_lit ")" | |
on_clause ::= "ON" db_name | |
order_by_clause ::= "ORDER BY" sort_fields | |
to_clause ::= "TO" user_name | |
where_clause ::= "WHERE" expr | |
with_measurement_clause ::= "WITH MEASUREMENT" ( "=" measurement | "=~" regex_lit ) | |
with_tag_clause ::= "WITH KEY" ( "=" tag_key | "!=" tag_key | "=~" regex_lit | "IN (" tag_keys ")" ) | |
// expressions | |
binary_op ::= "+" | "-" | "*" | "/" | "%" | "&" | "|" | "^" | "AND" | | |
"OR" | "=" | "!=" | "<>" | "<" | "<=" | ">" | ">=" | |
expr ::= unary_expr ( binary_op unary_expr )? | |
unary_expr ::= "(" expr ")" | var_ref | time_lit | string_lit | int_lit | | |
float_lit | bool_lit | duration_lit | regex_lit | |
// other | |
alias ::= "AS" identifier | |
back_ref ::= ( policy_name ".:MEASUREMENT" ) | ( db_name "." policy_name? ".:MEASUREMENT" ) | |
db_name ::= identifier | |
dimension ::= expr | |
dimensions ::= dimension ( "," dimension )* | |
field_key ::= identifier | |
field ::= expr alias? | |
fields ::= field ( "," field )* | |
fill_option ::= "null" | "none" | "previous" | "linear" | int_lit | float_lit | |
host ::= string_lit | |
measurement ::= measurement_name | ( policy_name "." measurement_name ) | ( db_name "." policy_name? "." measurement_name ) | |
measurements ::= measurement ( "," measurement )* | |
measurement_name ::= identifier | regex_lit | |
password ::= string_lit | |
policy_name ::= identifier | |
privilege ::= "ALL" "PRIVILEGES"? | "READ" | "WRITE" | |
query_id ::= int_lit | |
query_name ::= identifier | |
retention_policy ::= identifier | |
retention_policy_option ::= retention_policy_duration | retention_policy_replication | retention_policy_shard_group_duration | "DEFAULT" | |
retention_policy_duration ::= "DURATION" duration_lit | |
retention_policy_replication ::= "REPLICATION" int_lit | |
retention_policy_shard_group_duration ::= "SHARD DURATION" duration_lit | |
retention_policy_name ::= "NAME" identifier | |
series_id ::= int_lit | |
shard_id ::= int_lit | |
sort_field ::= field_key ( ASC | DESC )? | |
sort_fields ::= sort_field ( "," sort_field )* | |
subscription_name ::= identifier | |
tag_key ::= identifier | |
tag_keys ::= tag_key ( "," tag_key )* | |
user_name ::= identifier | |
var_ref ::= measurement |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment