Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Reserved Keywords document #45

Merged
merged 6 commits into from
Jul 21, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
294 changes: 294 additions & 0 deletions docs/reserved-keywords-spec-version-2019.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,294 @@
= PartiQL Reserved Keywords

The PartiQL language uses reserved keywords to parse and understand PartiQL statements.
In PartiQL language grammar reserved keywords cannot be used as non-delimited identifiers.
Example 1 shows queries that result in _Syntax Error_ because `FROM` is a Reserved Keyword in PartiQL:

.Example 1. Invalid PartiQL Query with a Reserved Keyword
[source, sql]
----
SELECT t.FROM FROM <<{'ID': 1, 'FROM': 'NA'}, {'ID': 2, 'FROM': 'SA'}>> AS t;
-- Output: Syntax Error

-- A reference to a Reserved Keyword is case-insensitive
SELECT t.from FROM <<{'ID': 1, 'FROM': 'NA'}, {'ID': 2, 'FROM': 'SA'}>> AS t;
-- Output: Syntax Error
----

In order to use reserved keywords in your PartiQL statements, use quoted identifiers as Example 2 shows:

.Example 2. Using Quoted Identifier as a Reserve Keyword in a PartiQL Statement.
[source, sql]
----
SELECT t."FROM" FROM <<{'ID': 1, 'FROM': 'NA'}, {'ID': 2, 'FROM': 'SA'}>> AS t;

-- Output: <<{'FROM': 'NA'}, {'FROM': 'SA'}>>
----

_Note: In PartiQL, a Quoted Identifier is case-sensitive; because of this rule, no result will get returned from the query shown in Example 3 in the absence of schemas in the environment._

.Example 3. Case sensitivity of quoted identifiers.
[source, sql]
----
SELECT t."FROM" FROM <<{'ID': 1, 'from': 'NA'}, {'ID': 2, 'from': 'SA'}>> AS t;
-- Output: <<{}, {}>>
----

== Reserved Keywords
[NOTE]
====
Reserved keywords are yet to be https://github.com/partiql/partiql-spec/issues/2[formally defined] in PartiQL Specification, therefore there may be some differences in different PartiQL implementations.
====

[cols="1,1,1,1",grid=none, frame=none]
|===

|ABSOLUTE
|ACTION
|ADD
|ALL
|ALLOCATE
|ALTER
|AND
|ANY
|ARE
|AS
|ASC
|ASSERTION
|AT
|AUTHORIZATION
|AVG
|BEGIN
|BETWEEN
|BIT
|BIT_LENGTH
|BY
|CAN_CAST
|CAN_LOSSLESS_CAST
|CASCADE
|CASCADED
|CASE
|CAST
|CATALOG
|CHAR
|CHARACTER
|CHARACTER_LENGTH
|CHAR_LENGTH
|CHECK
|CLOSE
|COALESCE
|COLLATE
|COLLATION
|COLUMN
|COMMIT
|CONFLICT
|CONNECT
|CONNECTION
|CONSTRAINT
|CONSTRAINTS
|CONTINUE
|CONVERT
|CORRESPONDING
|COUNT
|CREATE
|CROSS
|CURRENT
|CURRENT_DATE
|CURRENT_TIME
|CURRENT_TIMESTAMP
|CURRENT_USER
|CURSOR
|DATE
|DATE_ADD
|DATE_DIFF
|DEALLOCATE
|DEC
|DECIMAL
|DECLARE
|DEFAULT
|DEFERRABLE
|DEFERRED
|DELETE
|DESC
|DESCRIBE
|DESCRIPTOR
|DIAGNOSTICS
|DISCONNECT
|DISTINCT
|DO
|DOMAIN
|DOUBLE
|DROP
|ELSE
|END
|END-EXEC
|END_EXEC
|ESCAPE
|EXCEPT
|EXCEPTION
|EXCLUDED
|EXEC
|EXECUTE
|EXISTS
|EXPLAIN
|EXTERNAL
|EXTRACT
|FALSE
|FETCH
|FIRST
|FLOAT
|FOR
|FOREIGN
|FOUND
|FROM
|FULL
|GET
|GLOBAL
|GO
|GOTO
|GRANT
|GROUP
|HAVING
|IDENTITY
|IMMEDIATE
|IN
|INDEX
|INDICATOR
|INITIALLY
|INNER
|INPUT
|INSENSITIVE
|INSERT
|INT
|INTEGER
|INTERSECT
|INTERVAL
|INTO
|IS
|ISOLATION
|JOIN
|KEY
|LAG
|LANGUAGE
|LAST
|LATERAL
|LEAD
|LEFT
|LET
|LEVEL
|LIKE
|LIMIT
|LOCAL
|LOWER
|MATCH
|MAX
|MIN
|MISSING
|MODIFIED
|MODULE
|NAMES
|NATIONAL
|NATURAL
|NCHAR
|NEW
|NEXT
|NO
|NOT
|NOTHING
|NULL
|NULLIF
|NULLS
|NUMERIC
|OCTET_LENGTH
|OF
|OFFSET
|OLD
|ON
|ONLY
|OPEN
|OPTION
|OR
|ORDER
|OUTER
|OUTPUT
|OVER
|OVERLAPS
|OVERLAY
|PAD
|PARTIAL
|PARTITION
|PIVOT
|PLACING
|POSITION
|PRECISION
|PREPARE
|PRESERVE
|PRIMARY
|PRIOR
|PRIVILEGES
|PROCEDURE
|PUBLIC
|READ
|REAL
|REFERENCES
|RELATIVE
|REMOVE
|REPLACE
|RESTRICT
|RETURNING
|REVOKE
|RIGHT
|ROLLBACK
|ROWS
|SCHEMA
|SCROLL
|SECTION
|SELECT
|SESSION
|SESSION_USER
|SET
|SHORTEST
|SIZE
|SMALLINT
|SOME
|SPACE
|SQL
|SQLCODE
|SQLERROR
|SQLSTATE
|SUBSTRING
|SUM
|SYSTEM_USER
|TABLE
|TEMPORARY
|THEN
|TIME
|TIMESTAMP
|TO
|TRANSACTION
|TRANSLATE
|TRANSLATION
|TRIM
|TRUE
|UNION
|UNIQUE
|UNKNOWN
|UNPIVOT
|UPDATE
|UPPER
|UPSERT
|USAGE
|USER
|USING
|VALUE
|VALUES
|VARCHAR
|VARYING
|VIEW
|WHEN
|WHENEVER
|WHERE
|WITH
|WORK
|WRITE
|ZONE