Identifiers
Naming restrictions
-
The first character of an identifier must be an ASCII letter (e.g.,
a
-z
andA
-Z
) or an underscore (_
). -
The remaining characters of an identifier must be ASCII letters (e.g.,
a
-z
andA
-Z
), underscores (_
), ASCII digits (0
-9
), or dollar signs ($
). -
Non-ASCII characters in unquoted identifiers are not allowed.
-
You can circumvent any above rules by double-quoting the identifier (e.g.,
"5_source"
). All characters inside a quoted identifier are taken literally, except double-quotes must be escaped by writing two adjacent double-quotes, as in (e.g.,"two""quotes"
). -
In an expression, certain names are interpreted as builtins rather than column names. For example:
Names interpreted as builtinsSELECT user; -- This is the builtin `user`.
SELECT user, avatar FROM t; -- This is also the builtin `user`, rather than a column from the table `t`.Several such names require special attention, including
user
,current_timestamp
,current_schema
,current_role
,current_user
, andsession_user
. To avoid such issues, you can either avoid naming a column with these words, or qualify it with the table name (as shown in the example below) when such ambiguity happens.Solution to avoid naming conflictsSELECT t.user, avatar FROM t; -- Qualify it with `t.` to select the column rather than the builtin.
Case sensitivity
Identifiers are case-insensitive. It means wave
, WAVE
, and wAve
are the same identifier in RisingWave. This can cause issues when column names come from data sources that do support case-sensitive names, such as Avro-formatted sources or CSV headers.
To avoid conflicts, double-quote all field names (e.g., "field_name"
) when working with case-sensitive sources.
RisingWave processes unquoted identifiers as in lower cases. If you create a table named WAVE
, it will display as wave
when you choose to list all tables. You can reference it by wave
, WAVE
, or a combination of upper- and lower cases in SQL statements.