Ridge SQL Référence

ridge_sql implémente une relationnelle bornée SQL surface. Une syntaxe familière n'implique pas qu'elle soit complète PostgreSQL, MySQL ou SQLite. Les formes non prises en charge échouent explicitement.

Espèces

Le schéma et le format de ligne de génération 2 prennent en charge les formats bigint, double et borné exact. numeric/decimal, booléen, UTF-8 texte, octet, date, horodatage, timestamptz, intervalle, UUID, canonique JSON, valeurs nulles, valeurs par défaut, colonnes générées et colonnes de version optimiste.

Certaines voies analytiques avancées conservent des limites documentées plus étroites en matière de forme de colonne. La prise en charge des codecs ne doit pas être interprétée comme une couverture SQL illimitée.

Définition des données

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 surface délimitée comprend des index multi-colonnes nommés stables, des contraintes primaires, uniques, de vérification de plage d'ID et de clé étrangère d'ID primaire, une évolution de schéma additive, rename/drop gardes, REINDEXet résistant aux chocs table/index baisse de définition.

Manipulation des données

Les formes d'application prises en charge incluent plusieurs lignes INSERT, valeurs par défaut de colonnes arbitraires, séquences d'identité et d'incrémentation positive, UPSERT de clé primaire, général UPDATE et DELETE, lots préparés, et RETURNING *.

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

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

L'ingestion CSV basée sur des fichiers est disponible sous le nom COPY ... FROM 'path' WITH (FORMAT csv, HEADER, DELIMITER, QUOTE, ESCAPE, NULL) avec analyse de mémoire limitée en continu et sémantique partielle rollback/commit ; le protocole interactif pgwire COPY et les formats binaires ne sont pas revendiqués.

CSV l'exportation est disponible sous forme COPY <table> [(<col>, ...)] TO 'path' WITH (FORMAT csv, HEADER, DELIMITER, QUOTE, ESCAPE, NULL). Les lignes sont écrites dans l'ordre de la clé primaire (physique) avec les mêmes règles de citation que celles utilisées par le connecteur, y compris le jeton NULL rendu brut et sans guillemets tandis que les chaînes vides s'affichent sous la forme d'une paire vide entre guillemets, de sorte que les fichiers exportés effectuent un aller-retour sans perte. COPY ... FROM. LATIN1 reste une conversion d'importation uniquement et est rejetée TO. L'embarqué copy_csv_file helper est un proxy léger qui construit ceci SQL déclaration; CSV import/export est mis en œuvre uniquement dans ridge_sql.

Requêtes

La surface documentée couvre les projections et alias typés, la sémantique nulle, l'arithmétique limitée et les conversions, COALESCE, repli nul CASE, LIKE, BETWEEN, délimité IN, l'ordre, les limites, les jointures, le regroupement, les agrégats, les CTE non récursifs matérialisés, les opérations d'ensemble, les sous-requêtes délimitées, les filtres d'agrégation, les décomptes distincts et les fonctions de fenêtre documentées.

Utilisez EXPLAIN ou EXPLAIN ANALYZE pour inspecter le plan déterministe et le travail réel.

Opérations

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;

Les niveaux d'isolement pris en charge sont les lectures validées et les lectures répétables. Les transactions de validation automatique et explicites partagent les mêmes règles de visibilité et SQLSTATE. Après une connexion perdue, ne rejouez jamais automatiquement une mutation lorsque le résultat de la validation est inconnu.

Introspection

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;

Le service actuel expose une base de données configurée et la base de données synthétique public schéma de compatibilité. Les formes résultantes sont versionnées Ridge métadonnées, pas de compatibilité avec le catalogue MySQL.

Administration des bases de données et de la sécurité

Les déclarations administratives vivent dans le ridge_security_sql couche de catalogue, pas dans la ridge_sql plan de données. Ils sont acceptés sur une session inactive connectée à une base de données cataloguée existante (par exemple le bootstrap ridge base de données), s'exécute en tant que principal authentifié et doit être admis par le catalogue de sécurité. CREATE DATABASE name [OWNER owner] enregistre la base de données dans le catalogue de sécurité et crée son répertoire de stockage ; le propriétaire est par défaut le principal exécutant. DROP DATABASE name désactive l'entrée du catalogue et supprime le répertoire de stockage.

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;

Une base de données créée est connectable comme toute autre base de données cataloguée. Les instructions d'administration nécessitent une session inactive : en exécuter une dans une transaction ouverte échoue explicitement plutôt que d'y participer silencieusement.

Ridge c'est ALTER DATABASE ... OWNER le formulaire omet le TO mot-clé qui PostgreSQL utilise (ALTER DATABASE name OWNER owner, non OWNER TO owner).

Le même chemin d'administration gère les principaux, les rôles et les privilèges avec des formulaires limités :

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;

Les privilèges de base de données sont CONNECT, CREATE (schéma), et TEMPORARY/TEMP; table/schema/sequence les privilèges sont SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, TRUNCATE, REFERENCES, TRIGGER, USAGE, et CREATE. Chacun GRANT/REVOKE nomme exactement un privilège ; REVOKE accepte une option CASCADE ou RESTRICT, et GRANT accepte une option WITH GRANT OPTION. Seules ces formes délimitées sont prises en charge ; des écarts tels que IF NOT EXISTS, WITH les paramètres lors de la création de la base de données ou les listes de privilèges séparées par des virgules échouent explicitement.

Explicitement non pris en charge

Ne générez pas de déclencheurs, de procédures stockées, d'extensions, de CTE récursifs, de cadres de fenêtres généraux, partial/expression index, le pgwire COPY formats protocolaires et binaires, large information_schema, ou PostgreSQL pg_catalog requêtes. Vérifier grove/libs/ridge_sql/README.md avant de s’appuyer sur une expression complexe ou un comportement spécifique au protocole.