Every SQL statement, clause, and data type supported by mskql. For the formal grammar, see the Grammar Reference.
| Category | Supported |
|---|---|
| DDL | CREATE TABLE (IF NOT EXISTS),
DROP TABLE,
CREATE INDEX (IF NOT EXISTS),
DROP INDEX,
CREATE TYPE … AS ENUM, DROP TYPE,
CREATE SEQUENCE, DROP SEQUENCE,
CREATE VIEW, DROP VIEW,
ALTER TABLE (ADD/DROP/RENAME COLUMN,
ALTER COLUMN TYPE) |
| DML | INSERT (single, multi-row, INSERT…SELECT),
SELECT, UPDATE (incl. UPDATE…FROM),
DELETE,
RETURNING,
ON CONFLICT DO NOTHING,
ON CONFLICT DO UPDATE,
TRUNCATE TABLE,
COPY TO STDOUT (tab/CSV/header),
COPY FROM STDIN (tab/CSV) |
| Filtering | WHERE with AND/OR/NOT,
BETWEEN, IN (values, subqueries, multi-column),
ANY/ALL,
LIKE, ILIKE,
IS [NOT] NULL, IS [NOT] DISTINCT FROM,
= != <>
< > <= >= |
| Joins | INNER, LEFT, RIGHT,
FULL OUTER, CROSS,
NATURAL, USING,
LATERAL, multi-table,
compound ON conditions (AND/OR) |
| Aggregation | COUNT, SUM, AVG,
MIN, MAX,
COUNT(DISTINCT col),
STRING_AGG(), ARRAY_AGG(),
expression aggregates (SUM(price * qty)),
GROUP BY (multi-column, positional: GROUP BY 1, 2),
GROUP BY ROLLUP, GROUP BY CUBE,
HAVING |
| Window functions | ROW_NUMBER(), RANK(), DENSE_RANK(),
NTILE(), PERCENT_RANK(), CUME_DIST(),
LAG(), LEAD(),
FIRST_VALUE(), LAST_VALUE(), NTH_VALUE(),
SUM(), COUNT(), AVG()
over PARTITION BY … ORDER BY …,
window frames (ROWS BETWEEN …) |
| Set operations | UNION, UNION ALL,
INTERSECT, EXCEPT |
| CTEs | WITH name AS (SELECT …) SELECT …,
WITH RECURSIVE |
| Expressions | + - * / %,
unary -, operator precedence,
CASE WHEN…THEN…ELSE…END,
COALESCE(), NULLIF(),
GREATEST(), LEAST() |
| Result control | DISTINCT, DISTINCT ON,
ORDER BY (multi-column, per-column ASC/DESC),
LIMIT, OFFSET |
| Constraints | NOT NULL, UNIQUE, PRIMARY KEY,
DEFAULT, CHECK,
REFERENCES (foreign keys with
ON DELETE/UPDATE CASCADE,
RESTRICT, SET NULL,
SET DEFAULT) |
| Transactions | BEGIN, COMMIT, ROLLBACK
(snapshot-based) |
| String functions | UPPER(), LOWER(), LENGTH(),
TRIM(), CONCAT(), CONCAT_WS(),
||, SUBSTRING(),
REPLACE(), LPAD()/RPAD(),
POSITION(), SPLIT_PART(),
LEFT()/RIGHT(),
REPEAT(), REVERSE(), INITCAP() |
| Math functions | ABS(), CEIL()/CEILING(),
FLOOR(), ROUND() (with optional decimal places),
POWER(), SQRT(), MOD(),
SIGN(), RANDOM() |
| Date/time functions | NOW(), CURRENT_TIMESTAMP, CURRENT_DATE,
EXTRACT(), DATE_TRUNC(), DATE_PART(),
AGE(), TO_CHAR(),
date/timestamp ± interval arithmetic,
timestamp − timestamp → interval,
date ± integer days |
| Type casting | CAST(expr AS type), expr::type postfix syntax,
numeric↔numeric, numeric↔text, text↔boolean,
text→date/timestamp conversions |
| Table functions | generate_series(start, stop [, step]) — integer,
timestamp, and date sequences with optional step and column aliases |
| Sequences & utilities | NEXTVAL(), CURRVAL(),
GEN_RANDOM_UUID() |
| Subqueries | Scalar subqueries in SELECT list,
correlated subqueries,
EXISTS / NOT EXISTS (correlated),
IN (SELECT…) |
| Introspection | EXPLAIN (plan-based and legacy execution paths),
SHOW (server_version, search_path,
client_encoding, etc.),
SET/RESET/DISCARD (accepted, no-op),
information_schema.tables,
information_schema.columns,
pg_catalog.pg_type,
pg_catalog.pg_class,
pg_catalog.pg_namespace,
pg_catalog.pg_attribute |
→ Full SQL grammar reference — production rules for every statement, with implemented/not-implemented status for each feature.
| Type | Description |
|---|---|
SMALLINT / INT2 | 16-bit signed integer |
INT | 32-bit signed integer |
BIGINT | 64-bit signed integer |
FLOAT | Double-precision floating point |
NUMERIC / DECIMAL | Decimal number |
TEXT | Variable-length string |
VARCHAR(n) | Length-bounded string |
BOOLEAN | TRUE / FALSE |
DATE | Calendar date |
TIME | Time of day |
TIMESTAMP | Date and time |
TIMESTAMPTZ | Date and time with time zone |
INTERVAL | Time span |
UUID | 128-bit universally unique identifier |
SMALLSERIAL / SERIAL / BIGSERIAL | Auto-incrementing integer (16-bit / 32-bit / 64-bit) |
ENUM | User-defined enumeration type |