Ridge SQL Riferimento

ridge_sql implementa una relazione limitata SQL superficie. La sintassi familiare non implica completa PostgreSQL, MySQL o comportamento SQLite. Le forme non supportate falliscono esplicitamente.

Tipi

Lo schema di seconda generazione e il formato di riga supportano bigint, double, bounded esatto numeric/decimal, booleano, UTF-8 testo, bytea, data, timestamp, timestamptz, intervallo, UUID, canonico JSON, valori null, valori predefiniti, colonne generate e colonne di versione ottimistica.

Alcuni percorsi analitici avanzati mantengono limiti documentati più ristretti relativi alla forma delle colonne. Il supporto dei codec non deve essere interpretato come una copertura SQL illimitata.

Definizione dei dati

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 delimitata include indici multicolonna con nome stabile, controllo primario, univoco, dell'intervallo ID e vincoli di chiave esterna dell'ID primario, evoluzione dello schema additivo, rename/drop guardie, REINDEXe a prova di incidente table/index calo di definizione.

Manipolazione dei dati

Le forme dell'applicazione supportate includono più righe INSERT, valori predefiniti di colonne arbitrarie, identità e sequenze di incremento positivo, UPSERT chiave primaria, generale UPDATE e DELETE, lotti preparati e RETURNING *.

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

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

L'acquisizione CSV basata su file è disponibile come COPY ... FROM 'path' WITH (FORMAT csv, HEADER, DELIMITER, QUOTE, ESCAPE, NULL) con analisi della memoria limitata in streaming e semantica rollback/commit parziale; il protocollo interattivo pgwire COPY e i formati binari non sono rivendicati.

CSV l'esportazione è disponibile come COPY <table> [(<col>, ...)] TO 'path' WITH (FORMAT csv, HEADER, DELIMITER, QUOTE, ESCAPE, NULL). Le righe vengono scritte in ordine di chiave primaria (fisica) con le stesse regole di virgolette utilizzate dal connettore, incluso il token NULL reso grezzo e senza virgolette mentre le stringhe vuote vengono visualizzate come coppia vuota tra virgolette, quindi i file esportati vanno avanti e indietro senza perdite COPY ... FROM. LATIN1 rimane una conversione di sola importazione e viene rifiutata TO. L'incorporato copy_csv_file helper è un proxy sottile che costruisce questo SQL dichiarazione; CSV import/export è implementato solo in ridge_sql.

Domande

La superficie documentata copre proiezioni e alias tipizzati, semantica nulla, aritmetica limitata e cast, COALESCE, fallback nullo CASE, LIKE, BETWEEN, delimitato IN, ordinamento, limiti, join, raggruppamenti, aggregazioni, CTE non ricorsive materializzate, operazioni sugli insiemi, sottoquery limitate, filtri aggregati, conteggi distinti e funzioni finestra documentate.

Utilizzare EXPLAIN o EXPLAIN ANALYZE per ispezionare il piano delimitato deterministico e il lavoro effettivo.

Transazioni

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;

I livelli di isolamento supportati sono lettura impegnata e lettura ripetibile. Il commit automatico e le transazioni esplicite condividono la stessa visibilità e le stesse regole SQLSTATE. Dopo una connessione persa, non riprodurre mai automaticamente una mutazione quando il risultato del commit è sconosciuto.

Introspezione

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;

Il servizio corrente espone un database configurato e il file sintetico public schema di compatibilità. Le forme risultanti vengono sottoposte a versione Ridge metadati, non compatibilità del catalogo MySQL.

Amministrazione del database e della sicurezza

Le dichiarazioni amministrative vivono nel ridge_security_sql livello del catalogo, non nel file ridge_sql piano dati. Sono accettati su una sessione inattiva connessa ad un database catalogato esistente (ad esempio il bootstrap ridge database), eseguito come entità autenticata e deve essere ammesso dal catalogo di sicurezza. CREATE DATABASE name [OWNER owner] registra il database nel catalogo di sicurezza e crea la sua directory di archiviazione; il proprietario assume per impostazione predefinita l'entità esecutrice. DROP DATABASE name elimina definitivamente la voce del catalogo e rimuove la directory di archiviazione.

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;

Un database creato è collegabile come qualsiasi altro database catalogato. Le istruzioni di amministrazione richiedono una sessione inattiva: eseguirne una all'interno di una transazione aperta fallisce esplicitamente anziché parteciparvi silenziosamente.

Ridge's ALTER DATABASE ... OWNER il modulo omette il TO parola chiave che PostgreSQL utilizza (ALTER DATABASE name OWNER owner, no OWNER TO owner).

Lo stesso percorso di amministrazione gestisce entità, ruoli e privilegi con moduli limitati:

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;

I privilegi del database sono CONNECT, CREATE (schema) e TEMPORARY/TEMP; table/schema/sequence i privilegi sono SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, TRUNCATE, REFERENCES, TRIGGER, USAGE, e CREATE. Ciascuno GRANT/REVOKE nomina esattamente un privilegio; REVOKE accetta un facoltativo CASCADE o RESTRICT, e GRANT accetta un facoltativo WITH GRANT OPTION. Sono supportate solo queste forme delimitate; deviazioni come IF NOT EXISTS, WITH i parametri sulla creazione del database o gli elenchi di privilegi separati da virgole falliscono esplicitamente.

Esplicitamente non supportato

Non generare trigger, procedure memorizzate, estensioni, CTE ricorsive, frame di finestre generali, partial/expression indici, il pgwire COPY protocollo e formati binari, ampio information_schema, o PostgreSQL pg_catalog domande. Controlla grove/libs/ridge_sql/README.md prima di fare affidamento su un'espressione complessa o su un comportamento specifico del protocollo.