Ridge SQL Referência

ridge_sql implementa um relacional limitado SQL superfície. A sintaxe familiar não implica completa PostgreSQL, MySQL ou SQLite. As formas não suportadas falham explicitamente.

Tipos

O esquema de geração 2 e o formato de linha suportam bigint, duplo, exato limitado numeric/decimal, booleano, UTF-8 texto, bytea, data, timestamp, timestamptz, intervalo, UUID, canônico JSON, nulos, padrões, colunas geradas e colunas de versão otimista.

Alguns caminhos analíticos avançados mantêm limites de formato de coluna documentados mais estreitos. O suporte a codec não deve ser interpretado como cobertura SQL irrestrita.

Definição de dados

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
);

A superfície limitada inclui índices de múltiplas colunas nomeados estáveis, primário, exclusivo, verificação de intervalo de ID e restrições de chave estrangeira de ID primário, evolução de esquema aditiva, rename/drop guardas, REINDEXe à prova de acidentes table/index queda de definição.

Manipulação de dados

Os formatos de aplicativos suportados incluem várias linhas INSERT, padrões de coluna arbitrária, identidade e sequências de incremento positivo, UPSERT de chave primária, geral UPDATE e DELETE, lotes preparados e RETURNING *.

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

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

Baseado em arquivo CSV ingestão está disponível como COPY ... FROM 'path' WITH (FORMAT csv, HEADER, DELIMITER, QUOTE, ESCAPE, NULL) com análise de memória limitada de streaming e parcial rollback/commit semântica; o pgwire interativo COPY protocolo e formatos binários não são reivindicados.

CSV a exportação está disponível como COPY <table> [(<col>, ...)] TO 'path' WITH (FORMAT csv, HEADER, DELIMITER, QUOTE, ESCAPE, NULL). As linhas são escritas em ordem de chave primária (física) com as mesmas regras de cotação que o conector usa, incluindo o token NULL renderizado bruto e sem aspas, enquanto as strings vazias são renderizadas como o par vazio entre aspas, portanto, os arquivos exportados ida e volta sem perdas através COPY ... FROM. LATIN1 continua sendo uma conversão somente para importação e é rejeitada em TO. O incorporado copy_csv_file helper é um proxy fino que constrói isso SQL declaração; CSV import/export é implementado apenas em ridge_sql.

Consultas

A superfície documentada cobre projeções digitadas e aliases, semântica nula, aritmética limitada e conversões, COALESCE, substituto nulo CASE, LIKE, BETWEEN, limitado IN, ordenação, limites, junções, agrupamentos, agregações, CTEs não recursivos materializados, operações de conjunto, subconsultas limitadas, filtros agregados, contagens distintas e funções de janela documentadas.

Use EXPLAIN ou EXPLAIN ANALYZE para inspecionar o plano limitado determinístico e o trabalho real.

Transações

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;

Os níveis de isolamento suportados são leitura confirmada e leitura repetível. A confirmação automática e as transações explícitas compartilham a mesma visibilidade e regras SQLSTATE. Após uma conexão perdida, nunca reproduza uma mutação automaticamente quando o resultado do commit for desconhecido.

Introspecção

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;

O serviço atual expõe um banco de dados configurado e o sintético public esquema de compatibilidade. As formas resultantes são versionadas Ridge metadados, não compatibilidade do catálogo MySQL.

Administração de banco de dados e segurança

As declarações administrativas vivem no ridge_security_sql camada de catálogo, não na ridge_sql plano de dados. Eles são aceitos em uma sessão ociosa conectada a um banco de dados catalogado existente (por exemplo, o bootstrap ridge banco de dados), executado como o principal autenticado e deve ser admitido pelo catálogo de segurança. CREATE DATABASE name [OWNER owner] registra o banco de dados no catálogo de segurança e cria seu diretório de armazenamento; o proprietário assume como padrão o principal executor. DROP DATABASE name marca a entrada do catálogo e remove o diretório de armazenamento.

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;

Um banco de dados criado pode ser conectado como qualquer outro banco de dados catalogado. As instruções administrativas exigem uma sessão ociosa: a execução de uma dentro de uma transação aberta falha explicitamente, em vez de participar silenciosamente dela.

Ridge de ALTER DATABASE ... OWNER formulário omite o TO palavra-chave que PostgreSQL usa (ALTER DATABASE name OWNER owner, não OWNER TO owner).

O mesmo caminho de administração gerencia entidades, funções e privilégios com formulários limitados:

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;

Os privilégios do banco de dados são CONNECT, CREATE (esquema) e TEMPORARY/TEMP; table/schema/sequence privilégios são SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, TRUNCATE, REFERENCES, TRIGGER, USAGEe CREATE. Cada GRANT/REVOKE nomeia exatamente um privilégio; REVOKE aceita um opcional CASCADE ou RESTRICTe GRANT aceita um opcional WITH GRANT OPTION. Somente essas formas limitadas são suportadas; desvios como IF NOT EXISTS, WITH parâmetros na criação do banco de dados ou listas de privilégios separadas por vírgula falham explicitamente.

Explicitamente sem suporte

Não gere gatilhos, procedimentos armazenados, extensões, CTEs recursivos, frames de janela em geral, partial/expression índices, o pgwire COPY protocolo e formatos binários, ampla information_schema, ou PostgreSQL pg_catalog consultas. Verifique grove/libs/ridge_sql/README.md antes de confiar em uma expressão complexa ou comportamento específico do protocolo.