Ridge SQL Referencia

ridge_sql implementa un relacional acotado SQL superficie. La sintaxis familiar no implica completa. PostgreSQL, MySQL o SQLite. Las formas no admitidas fallan explícitamente.

Tipos

El esquema de generación 2 y el formato de fila admiten bigint, doble y exacto acotado. numeric/decimal, booleano, UTF-8 texto, bytea, fecha, marca de tiempo, marca de tiempo, intervalo, UUID, canónico JSON, valores nulos, valores predeterminados, columnas generadas y columnas de versión optimista.

Algunas rutas analíticas avanzadas conservan límites de forma de columna documentados más estrechos. La compatibilidad con el códec no debe interpretarse como una cobertura SQL sin restricciones.

Definición de datos

CREATE TABLE account_records (
    account_id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
    name TEXT NOT NULL,
    balance BIGINT NOT NULL DEFAULT 0,
    active BOOLEAN NOT NULL DEFAULT true,
    version BIGINT NOT NULL DEFAULT 1
);

La superficie delimitada incluye índices estables de varias columnas con nombre, restricciones primarias, únicas, de rango de ID y de clave externa de ID primaria, evolución aditiva del esquema, rename/drop guardias, REINDEXy a prueba de choques table/index caída de definición.

Manipulación de datos

Las formas de aplicaciones admitidas incluyen varias filas INSERT, valores predeterminados de columnas arbitrarias, secuencias de identidad y de incremento positivo, UPSERT de clave primaria, general UPDATE y DELETE, lotes preparados, y RETURNING *.

INSERT INTO account_records (name, balance)
VALUES ('Ada', 125)
RETURNING *;

UPDATE account_records
SET balance = 135
WHERE account_id = 1
RETURNING *;

Basado en archivos CSV La ingesta está disponible como COPY ... FROM 'path' WITH (FORMAT csv, HEADER, DELIMITER, QUOTE, ESCAPE, NULL) con análisis de memoria limitada en streaming y parcial rollback/commit semántica; el pgwire interactivo COPY Los formatos binarios y de protocolo no se reclaman.

CSV La exportación está disponible como COPY <table> [(<col>, ...)] TO 'path' WITH (FORMAT csv, HEADER, DELIMITER, QUOTE, ESCAPE, NULL). Las filas se escriben en orden de clave primaria (física) con las mismas reglas de comillas que utiliza el conector, incluido el token NULL representado sin formato y sin comillas, mientras que las cadenas vacías se representan como el par vacío entre comillas, por lo que los archivos exportados viajan de ida y vuelta sin pérdidas. COPY ... FROM. LATIN1 sigue siendo una conversión de sólo importación y se rechaza en TO. el incrustado copy_csv_file helper es un proxy ligero que construye esto SQL declaración; CSV import/export se implementa sólo en ridge_sql.

Consultas

La superficie documentada cubre proyecciones y alias mecanografiados, semántica nula, aritmética acotada y conversiones, COALESCE, respaldo nulo CASE, LIKE, BETWEEN, limitado IN, ordenamiento, límites, uniones, agrupaciones, agregados, CTE no recursivos materializados, operaciones de conjuntos, subconsultas limitadas, filtros agregados, recuentos distintos y funciones de ventana documentadas.

Utilice EXPLAIN o EXPLAIN ANALYZE para inspeccionar el plan delimitado determinista y el trabajo real.

Transacciones

BEGIN ISOLATION LEVEL REPEATABLE READ;
SELECT * FROM account_records WHERE account_id = 1 FOR UPDATE;
UPDATE account_records SET balance = 110 WHERE account_id = 1;
COMMIT;

Los niveles de aislamiento admitidos son lectura confirmada y lectura repetible. Las transacciones automáticas y explícitas comparten la misma visibilidad y reglas SQLSTATE. Después de perder una conexión, nunca reproduzca una mutación automáticamente cuando se desconozca el resultado de la confirmación.

Introspección

SHOW DATABASES;
SHOW SCHEMAS;
SHOW TABLES;
SHOW FULL TABLES FROM ridge;
SHOW COLUMNS FROM accounts;
SHOW FIELDS IN accounts;
DESCRIBE accounts;
DESC accounts;
SHOW INDEXES FROM accounts;
SHOW KEYS IN accounts;
SHOW CONSTRAINTS FROM accounts;

El servicio actual expone una base de datos configurada y la sintética. public esquema de compatibilidad. Las formas resultantes están versionadas. Ridge metadatos, no compatibilidad con el catálogo MySQL.

Administración de bases de datos y seguridad.

Las declaraciones administrativas viven en el ridge_security_sql capa de catálogo, no en la ridge_sql plano de datos. Se aceptan en una sesión inactiva conectada a una base de datos catalogada existente (por ejemplo, el programa de arranque). ridge base de datos), ejecutarse como principal autenticado y debe ser admitido por el catálogo de seguridad. CREATE DATABASE name [OWNER owner] registra la base de datos en el catálogo de seguridad y crea su directorio de almacenamiento; el propietario no cumple con el principal ejecutor. DROP DATABASE name desecha la entrada del catálogo y elimina el directorio de almacenamiento.

CREATE DATABASE projects OWNER ada;
CREATE DATABASE scratch;              -- owner defaults to the executing actor
ALTER DATABASE projects RENAME TO projects_v2;
ALTER DATABASE projects_v2 OWNER bob;
DROP DATABASE projects_v2;
SHOW DATABASES;

Una base de datos creada se puede conectar como cualquier otra base de datos catalogada. Las declaraciones de administrador requieren una sesión inactiva: ejecutar una dentro de una transacción abierta falla explícitamente en lugar de participar silenciosamente en ella.

Ridge's ALTER DATABASE ... OWNER formulario omite el TO palabra clave que PostgreSQL usos (ALTER DATABASE name OWNER owner, no OWNER TO owner).

La misma ruta de administración gestiona principales, roles y privilegios con formularios acotados:

CREATE USER ada PASSWORD 'secret' SUPERUSER;
CREATE ROLE reader;
ALTER USER ada PASSWORD 'secret';
ALTER USER ada LOGIN;
ALTER USER ada NOLOGIN;
ALTER USER ada SUPERUSER;
ALTER USER ada NOSUPERUSER;
DROP USER ada;                         -- DROP ROLE ada also accepted
GRANT reader TO ada;
REVOKE reader FROM ada;
GRANT CONNECT ON DATABASE projects TO ada;
GRANT SELECT ON TABLE accounts TO reader WITH GRANT OPTION;
REVOKE SELECT ON TABLE accounts FROM reader CASCADE;
GRANT USAGE ON SEQUENCE accounts_id_seq TO reader;
GRANT CREATE ON SCHEMA public TO ada;
ALTER DEFAULT PRIVILEGES GRANT SELECT ON TABLES TO reader;
ALTER DEFAULT PRIVILEGES REVOKE SELECT ON TABLES FROM reader;
SHOW USERS;
SHOW ROLES;
SHOW AUDIT;

Los privilegios de la base de datos son CONNECT, CREATE (esquema), y TEMPORARY/TEMP; table/schema/sequence los privilegios son SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, TRUNCATE, REFERENCES, TRIGGER, USAGE, y CREATE. cada uno GRANT/REVOKE nombra exactamente un privilegio; REVOKE acepta una opción CASCADE o RESTRICT, y GRANT acepta una opción WITH GRANT OPTION. Sólo se admiten estas formas delimitadas; desviaciones como IF NOT EXISTS, WITH Los parámetros en la creación de la base de datos o las listas de privilegios separadas por comas fallan explícitamente.

Explícitamente sin soporte

No genere disparadores, procedimientos almacenados, extensiones, CTE recursivos, marcos de ventanas generales, partial/expression índices, el pgwire COPY protocolo y formatos binarios, amplio information_schema, o PostgreSQL pg_catalog consultas. comprobar grove/libs/ridge_sql/README.md antes de confiar en una expresión compleja o un comportamiento específico del protocolo.