The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Distinct highlight colors: Selected table uses vivid blue, related tables use warm amber/gold — instantly distinguishable at any depth
- White text on highlighted tables: Text color now switches to white during highlight for reliable contrast in both light and dark themes
- Active filter chip styling: Group filter chips use a fixed accent blue with white text instead of theme foreground/background swap, ensuring visibility in all themes
The former calls toDDL and toERD
let output = toDDL(input,opt);
are encouraged to be replaced with
let qsql = new quicksql(input,opt); // parse once only
let output = qsql.getDDL();
let errors = qsql.getErrors();
Issues up to #51
Further Json to QSQL parsing progress
Performance optimization: from 12 sec down to 4.5 sec for 1000 line QSQL schema definition in test/profile.js (test for pk-fk chain of 333 tables, 3 column each; 268 ms for chain of 50 tables, 20 columns each).
Issue #52
Fixed invalid 'Misaligned Table ...' error, exhibited in vscode QSQL extension (yet to be published).
NPX command
Error diagnostic fixes
#41
#57 #62 #63
Misindented error diagnostics, one more time Table and column directive syntax check
#65 #67 #84
#71 #78
- 26ai database version: Added
26aias a supported value for thedbsetting.
- Reserved word prefix with user prefix: Skip reserved word prefix when a user-defined prefix is already set.
- Flashback Data Archive directives: New
/flashbackand/fdatable directives to enable Flashback Data Archive on tables. Optionally specify an archive name, e.g./flashback myarchive.
- Oracle 23ai annotations: New
{key 'value'}syntax for adding Oracle SQL annotations to tables, columns, and views. Supports key-value pairs, flag annotations, and multiple annotations per element.
- Translation directive (
/trans,/translation,/translations): New column directive for multi-lingual translation support. Automatically generates a sharedlanguagetable, a<table>_transtable with translated column variants, and a<table>_resolvedview that joins them usingsys_contextfor the current language. Configurable via thetranscontextsetting.
- DESCRIPTION annotation comment generation: When a table or column annotation includes a
DESCRIPTIONkey (e.g.,{DESCRIPTION 'Main HR table'}), aCOMMENT ON TABLEorCOMMENT ON COLUMNstatement is automatically generated. TheDESCRIPTIONannotation takes precedence over explicit comments. - Double-quoted annotation values: Annotation values now support both single quotes (
'value') and double quotes ("value").
- Immutable tables (
/immutable): New table directive that generates aBEFORE UPDATE OR DELETEtrigger preventing any modifications after insert. Use for audit logs, inspection records, and other append-only tables. - SODA collections (
/soda): New table directive that generates a fixed-schema SODA-compatible collection table withid,created_on,last_modified,version, andjson_documentcolumns. Child columns are ignored. - Table groups (
{GROUP 'name'}): NewGROUPannotation on tables that generatesINSERTstatements intoUSER_ANNOTATIONS_GROUPS$andUSER_ANNOTATIONS_GROUP_MEMBERS$for logical table grouping. - Translation-aware views: Views over tables with
/transcolumns now automatically usecoalesce(t.trans_col, tbl.col)expressions andLEFT JOINto the_transtable with the configuredtranscontextlanguage filter.
- Default date expressions: SQL date expressions (
sysdate,current_date,current_timestamp,systimestamp,localtimestamp) used with/defaultare no longer incorrectly quoted on timestamp and varchar columns.
- External FK prefix: Foreign key references to external tables (not defined in the QuickSQL model) no longer get the object prefix prepended. E.g.
/fk UC_FLOWFORMS_FORMwith prefixIWnow correctly generatesreferences UC_FLOWFORMS_FORMinstead ofreferences iw_UC_FLOWFORMS_FORM.
- ANSI JOIN syntax in views: Views now use
LEFT JOIN ... ONandCROSS JOINinstead of comma-separated tables with Oracle(+)outer join syntax inWHERE. Tables are topologically sorted so base tables appear first, then dependent tables join via FK conditions.
- Immutable table trigger:
BEFORE INSERT OR UPDATEreduced toBEFORE INSERTfor/immutabletables, and the deadELSIF UPDATINGbranch forrow_versionis omitted.