pawsql-doc build-changelog from the engine repository’s release tag ranges, and updated per release after human review.
Content outside the marked region is freely editable; do not hand-edit entries inside it — change the source commits and re-run the generator.
SQL Review
- Added the EmptyString4DefaultDisallowed and PKOrUINotContainingShardingKey rules (70b9e97d)
SQL Optimization
- Fixed null handling in the MAXMIN rewrite (30c0e4ac)
- Added the statistics Extractor framework (70b9e97d)
SQL Parsing & Database Support
- datetime is parsed as timestamp rather than date (0d5b9de0)
- CTEs support the NOT? MATERIALIZED modifier (521236c5)
- When database is empty, some databases fall back to the user name (c9350d0e)
SQL Review
- IncColumn4PrimaryKeyRequired applies to non-distributed databases only (780b235c)
- IncColumn4PrimaryKeyDisallowed applies to distributed databases only (780b235c)
- RuleRowsOfDMLExceedThreshold threshold changed to 1000 (780b235c)
- select * is flagged everywhere except inside exists (efcd7d12)
SQL Parsing & Database Support
- Fixed SQLInfo for insert select statements (6c6ed248)
- Fixed parsing of merge into when not matched then (ea3d9b2b)
SQL Optimization
- Improved DerivedTable2LateralJoinRewrite to fix table order after the lateral transform (02652ad2)
- straight join can be rewritten; JoinEliminationRewrite handles non-PK/FK cases (88034c20)
- Optimisation for joins that lack a join condition (97588a7f)
- Optimisation: derived tables are converted to lateral joins (f158ff2a)
SQL Parsing & Database Support
- Refactored the SQL parser to reduce unnecessary query markers; advisors share transferSQL (0ba59f18)
- Added PostgreSQL create extension (1e834105)
- Updated the parser so a single statement in PL/SQL, TSQL or PGSQL no longer uses the script parser (26ac03de)
- Added TDSQL-specific keywords (2bc9d6d7)
- Improved the SQL parser (396145a0, 7056efb0)
- Distributed TDSQL uses format = tree when analyze is unsupported (4ba9c64c)
- A missing baseTable is no longer created during parsing, which used to affect business-query detection (53bee3ee)
- Added TDSQL sequence parsing and review (5603d32b, 17fb601d)
- Fixed constant parsing (6426c7dc)
- Non-DDL statements no longer check table and column existence (67de9323)
- Fixed PL/SQL parse exception handling (74ba0e41)
- Partition definitions are grouped under tableOption (87a054be)
- Fixed qualifier resolution (8d51de50)
- Fixed the decimal type mismatch between online table structure and offline DDL parsing (99a41380)
- Improved varchar detection and set text lengths; NotInNullableSubQueryRewrite gained a controllable check (9ccdc85d)
- Improved the SQL parser with detailed object-name analysis and better syntax warnings (a1441915)
- Added the script SQL statement type (b0a9fbb6, 317ac3c6)
- Fixed parsing of positional group by ordinals on Oracle (bcaa9cdb)
- Fixed unnamed indexes (bfb74251)
- Corrected line information inside SQL during script parsing (c013ce5a)
- Fixed retrieving non-SQL statements (c987f636)
- Fixed variable-length character-type detection and treat MySQL utf8 as utf8mb3 (cf641ad7)
- Script parsing adds create database/use database to the statement list so they execute (d640cee2)
- Improved execution-plan parsing for complex TDSQLX-MySQL statements (e4ffa312)
- Fixed select-list parsing (eb077594)
- Added Hive lateral reference (f79f4cd1)
SQL Review
- Parse-time audit rules accept a severity supplied by the front end (10d45e03, 5832e557)
- NoCondition4JoinWarning excludes lateral joins (b9a21cf2)
SQL Optimization
- Added the DerivedTable2LateralJoinRewrite rule (three cases) (3aeeeb05)
- Filter predicates are not pushed into a CTE that is referenced more than once (98b91d9f)
- Query folding of nested subqueries now starts from the innermost (dabfe743)
- Improved NotInNullableSubQueryRewrite and UnnecessaryDistinctEliminationRewrite for nested expressions (e325f3a5)
SQL Parsing & Database Support
- Full MySQL PL support, with all script tests passing (0224efd8)
- More robust DML visitor supporting WITH CTE in subqueries, ShardingKeyIncluded4Insert and NoFilter4PartitioningColumns (1cf75599)
- The sqllabs variables were renamed to pawsql (4d11675e)
- New option controls sharing of ANTLR globals (sqllab.exclusive) (65519088)
- Fixed a defect in extract function handling (7aa6d916)
- Reordered select-list and predicate rules for performance (9797ad5f, 47fbb8c5)
- StatementExtractor uses the external SQL parser (c961dad2)
- Grammar optimisation for speed (e2b774b2)
SQL Review
- Fixed syntax-rule filtering (41d80d69)
- Fixed NoLimit4SelectWarning and StatementExtractor (47cf8d72)
- The add-LIMIT-to-SELECT rule excludes common aggregate queries without group by (677b644e, 9b945625)
- RuleFuncWithColumnInPredicate rewrites date_format and str_to_date (c55bb262)
- Corrected the ruleCode of RuleLargeOffset (e59eb757)
- RuleFuncWithColumnInPredicate rewrites equality on substr/substring (e59eb757)
- Enabled RuleStraightJoinWarning in the engine (f3cc322a)
SQL Optimization
- Improved the cost model for OR-condition SELECT rewrites (13b46400)
- Improved result-set uniqueness detection for RuleUnnecessaryDistinctEliminationRewrite (2ba988fc)
- Rewrite rules return early when configured as non-rewriting (382e919d)
- Reworked the handling in RuleQueryFoldingRewrite, RuleSelectSSQRewrite and RuleFilterPredicatePushDownRewrite (414f2f49)
- SATTC rewriting in RuleOrderFromDiffTablesRewrite and TCRewriter supports ValueExpressionTableExpr (500e4563)
- groupconcat is parsed as an analytic function (648ac6da)
- Improved RuleOrCond4SelectRewrite: no primary key for mutually exclusive branches, keep limit/order by without group by, resolve duplicate select-column names (8a77e8f5)
- Derived tables without a table are excluded (c1f20d1a)
- Fixed the date_format rewrite algorithm (e2d836cf)
Index Recommendation
- TDSQL keeps index column direction; new threshold for the maximum number of sort columns (6c1b2d71)
- Index clean-up failures are reported (8c55fa97)
- Added the index clean-up (IndexClean) capability (c59e465a)
SQL Parsing & Database Support
- SQL Server moved from script parsing to tsql parsing (00a220c4)
- Improved the PostgreSQL and universal parsers (0a2f0899)
- SQL fingerprints replace every constant (11204e94)
- Performance improved with a keyword set (141cc58d)
- Fixed duplicate output of references and renamed the parser warm-up parameter (152e1919)
- MySQL collects statistics with execQuery, other databases with execUpdate (19afc487)
- Syntax exceptions now carry line information (1bb98f0e)
- Fixed a dataTypeFunctionCall syntax exception (2958c481)
- The execution-plan tree no longer calls transferSQL; the caller does (3afafde9)
- The script parser supports += assignment (40f2e9a5)
- Column not-found errors are logged instead of counted as exceptions (47d881f3)
- Fixed script parsing returning empty for SQL-only input; grammar optimisation for speed (4b52d946)
- The script parser supports SQL without semicolons (50d71edb)
- More robust PostgreSQL script parser (8dd0bee4)
- The universal parser handles more complex predicates such as @> (99031be2)
- Warm up the ATN cache (a513a5de)
- ANTLR DFA warm-up is controlled by a system property (a51bd3bd)
- Grammar optimisations (d79c1394)
- Fixed delete using serialisation and support parenthesis-free functions such as current_date (dedcd0c8, f4486424, 0409db38)
- Added MySQL PL grammar (e0afe8c7)
- Improved script parser performance (f5aa48a6)
SQL Review
- Added RuleCalculationOnDistributedColumns (0766c024)
- Syntax-level audit rules without a dedicated rule class are filtered by the supplied rule list (27256f45)
- The unnecessary-update rule is no longer a rewrite rule (2cae17d2)
- A missing database object no longer raises a severe warning (aee029fc)
SQL Optimization
- Added or reworked around 60 optimisation algorithms for CCDDC development (655d6dac)
- Predicate analysis estimates filter rates for null/between/inValues (b1c6ea7d)
Index Recommendation
- Redundant and duplicate index checks are separated, with distinct severities for RuleDuplicateIndexDisallowed (87d4b135)
SQL Parsing & Database Support
- Columns gained compression attributes; partition list information is supported (03d75121)
- Fixed missing tables when the Oracle user and schema differ, and SQL Server switching databases with use db (03d75121)
- Added MySQL replace statement support; statistics collection uses execQuery (03d75121)
- Added numeric literals with suffixes (1000L, 1.0d, 2.0f) (267b2e78)
- Fixed a defect in the PL/SQL grammar file (32eb2a73)
- Parameters declared in for loops and blocks stay in context so they are not mistaken for table columns (32eb2a73)
- Retrieve Oracle table row counts, defaults and comments online (4b936556)
- Added object-typed variable references such as :customer.name (6faea949)
- Added SQL Server convert function support (82838a64)
- Added replace syntax (b1c6ea7d)
- Fixed serialisation of multi-table update columns and placeholders (b1c6ea7d)
- Fixed table-object context updates and partition-type detection in script parsing (b1c6ea7d)
- Update target columns now carry table information (b1c6ea7d)
- Script parsing supports cursor variable references (PL/SQL) (b1c6ea7d)
- More robust threshold parsing; an empty threshold falls back to the default (f0c092d1, 465261ae)
- Fixed script parsing failing on SQL without a trailing semicolon (f99b3352)
- Fixed retrieving unsigned integer column types online (ff890117, 458c1eb0)
Index Recommendation
- Filters are pushed to the front of the index even for the driven table (5e74df78)
SQL Parsing & Database Support
- Added the ansi database type (mapped to PostgreSQL when no type is given) (008b2dee)
- Added the arrayComparison predicate (1cb3417b)
- uid/user are no longer treated as pseudo columns (c8cb69de)
SQL Review
- Added RuleBackupTableInSpecificSchema and RuleBackupTableNamingConversion (0385b670)
- RuleUpDeleteWithLimitWarning checks update only; RuleMaxMinAggRewrite supports dummy columns (3abb673e)
- Added RuleShardingTables2Replicated, RuleSubqueryPredicatePushDownRewrite, RuleUnionConstantRewrite and RuleDeleteWithLimitWarning, and reorganised the sharding rules directory (d5ae5bf3)
- FOR UPDATE rule: suggest evaluating optimistic locking when no unique index is matched (dab36c7c)
SQL Optimization
- Fixed a defect in RuleSubqueryPredicatePushDownRewrite (28c27bb4)
- Performance: above the table threshold an online workspace resolves only the tables named in the SQL (2a66245e, c82f328e)
- Fixed CTE handling in type-1 query folding (9c42452b)
- Subquery decorrelation costing: decorrelate only when the outer row count is smaller (ba47f747)
- The rewrite distinguishes TimestampDiff(date1, date2) from TimestampDiff(type, startTS, endTS) (dab36c7c)
Index Recommendation
- Index recommendation: fixed derived-table join conditions being treated as filters (9b5b2585)
SQL Parsing & Database Support
- NULL elements passed to schema parsing are ignored (69e9f0b0)
- Corrected the Dameng connection string (84072cfa)
- SQL Server allows ID as a token (a4d8637f)
- Online DDL parsing defaults to the first schema (c6111611)
- The SQL parser supports create table like (f2e984c1)
SQL Review
- Table and column not-found cases are reported as audit rules instead of parse exceptions (412a9133)
- Table and column not-found violations are collapsed into one RuleAuditResult (811ccf6e)
- DbAuditResult gained scoring (getScore) (93435c73)
- RuleNumOfLevelOfSubQuery and RuleNoCond4NonAggSelectWarning exclude pseudo tables such as dual (cae1919f)
SQL Optimization
- Variable substitution in indexadvisor/sqladvisor is deferred to performance validation (5266c59f)
- RuleSelectSSQRewrite skips rewriting with an unconditional filter and no aggregate (534fd699)
SQL Parsing & Database Support
- Improved row-count retrieval for cases without a DatabaseTable (1fba12e0)
- Fixed octal and hexadecimal constant deserialisation (231b9ce8, c7356598)
- Improved column-name resolution and added Oracle nextval (231b9ce8)
- Fixed online parsing of TDSQLX-MySQL distribution columns (4cb1de62)
- Fixed QueryAuditResult scoring (getScore) (72c560b5)
- Fixed straight join serialisation (95749509)
- Fixed table alias deserialisation (9643d91e, 2b95419e)
- Fixed % operator deserialisation (ae9a36d7, c3819c34)
- decimal_literal now stands for all integer literals; begin is a reserved keyword (afaaca5f)
- Fixed constant-expression deserialisation (c3186498)
- Improved alias handling in table-reference replacement (d6615cde)
SQL Review
- Fixed a null-pointer exception in RuleLocal4ShardingDatabase when the partition clause is empty (b252f9bb)
- Fixed an exception in CommentsOnTableRequired when fetching line numbers online (b252f9bb)
- Fixed unwrapping negated nested conditions; inspection skips the dbe_profiler schema on GaussDB (b252f9bb)
- Fixed the violation text of RuleNumOfJoinTables (fd83722e)
- RuleNumOfLevelOfSubQuery excludes query blocks without a From clause (fd83722e)
SQL Optimization
- Derive a false predicate from a = 1 and a <> 1 (6fb1960d)
- Fixed using(col) table correlation for multi-table and derived-table subqueries (951cf907)
Index Recommendation
- Index recommendation orders the leading column by descending selectivity (f026b54c)
SQL Parsing & Database Support
- Added TDSQLX for PostgreSQL support (52af0ba4)
- Oracle functions such as SYSTIMESTAMP and CURRENT_DATE no longer need parentheses (5a29cc1d)
- String datatypes generate numeric strings (73167d65)
- Variable assignment is supported in the model and writer (75662690)
- Variables gained datatypes; Oracle’s default charset no longer uses built-in casts; SQL Server local variables are resolved (78099e3e)
- Fixed SQL Server parsing with newline as the statement separator (e35c413e)
- Fixed window function cloning (ed3d563b)
- Variable resolution moved to validation; no query folding when the outer query assigns (f66f4906)
- Improved the robustness of SQLScriptVisitor (fd83722e)
SQL Optimization
- Fixed the rewrite algorithm for two identical scalar subqueries (0e6a35d7)
- RuleQueryFoldingRewrite gained a second algorithm that avoids adding inner select columns (0e6a35d7)
- RuleNotInNullableSubQueryRewrite uses NFC to decide whether to add is not null (0e6a35d7)
- Scalar-subquery decorrelation also applies when the outer query groups (15e64b54, d6acf59c)
- Fixed SATTC recommending duplicate conditions (cdcbac4b)
- LIKE without wildcards is rewritten to an equality predicate (edca8e41)
- Fixed predicate pushdown with nested variables and rank functions (edca8e41)
SQL Parsing & Database Support
- Added SQL templates and SQL obfuscation (010e889c)
- Fixed getSQL for subqueries (01f46b33)
- Fixed a memory leak from deep-copying WithTable (1c1de8c8)
- Improved validateSyntax (25e48113)
- Fixed getSQL for variable constants (40395bec)
- div is allowed as an identifier (41145770)
- Conditions are accepted as function parameters; aggregate grammar gained jsonb_agg (45aa6cbc)
- Exposed the sql-transformer capability (5b25a482, 461e37e9, 0bc2e720)
- Fixed constant parsing for _UTF8 ’-’ (62c4e519)
- Improved bigserial datatype parsing (unique, not null, identity) (62ce1144)
- Added N’dd’ string deserialisation (710617a2)
- Performance validation accepts row counts in scientific notation (e71765cf)
- Added support for non-standard whitespace such as u2003 (f9e1ff09)
SQL Review
- SQL objects carry line information (04fc8d49, 4046fc2b)
- The index-invalidating-expression rule no longer flags aggregate functions (4e475e20)
- Fixed RuleSelectSSQRewrite with duplicate column names (585c7ba9)
- SQL Server scripts report the line of each violation (64ddccfc, 3943c5cc)
- Partitioned-table rules are more robust (d40ddf78)
SQL Optimization
- Scalar-subquery decorrelation always adds the group by columns (303a1b9e)
- No scalar-subquery decorrelation when for xml auto is used (3bcdfe1c)
- Filter-predicate pushdown no longer pushes dummy or explode expressions (3fd7d0c6)
- Fixed a defect in the SATTC rewrite (578fe1c4)
- All SQL is transformed before performance validation, so variables no longer break it (8108de7b)
- Filter-predicate pushdown now covers set branches, single derived tables and both sides of a join (8899ede9)
- Dummy expressions keep their original text (8ad40324)
- Fixed a defect in RuleSelectSSQRewrite (94042f3a)
- Improved SATTC with nested conditions (9a2efdbe, 262abc09)
- SAT optimisation: rewrites for same-column constant comparisons (adfaa473)
- RuleOrCond4SelectRewrite excludes correlation conditions from costing (b825546c, 449141c6)
- Dummy expressions are qualified as needed (cf3052cf)
Index Recommendation
- Fixed redundant index usage (3e3d16f0, 27314328)
- A duplicate unique index is no longer suggested for removal (f0e188e0)
SQL Parsing & Database Support
- Value-expression lookup covers expressions inside GroupConcat (479baccd)
- Fixed an interval syntax error introduced by DB2 support (5e8452b9)
- Added OUTER APPLY syntax; SQL is formatted before performance validation (95ddc5e7)
- Added DB2 support to the optimizer (b9e57646, 7e128e9c)
- Fixed window function deserialisation (c1f1c133)
- Added an online DDL parser for DB2 (cd3a8809)
SQL Review
- Fixed defects in the Hive rules (3dc384dd)
- Fixed business-query detection (4baa6c2b)
- SQL objects carry line information to locate violations (9fcbb50a)
SQL Optimization
- Improved SAT handling for nested conditions (62aa3517)
- Fixed a decorrelation defect and an exception when all correlated columns belong to the outer query (d89de33b)
- Added the InValues rewrite (d89de33b)
Index Recommendation
- Target tables of delete/update/merge are not index-only candidates (9eee0610)
SQL Parsing & Database Support
- More robust scalar-subquery parsing (4ed19977, 3c063467)
- Fixed columnstore index creation parsing for SQL Server (aba5a3d8)
- Fixed Hive clustered/sorted clause parsing (d533db0f)
- Variables are resolved during validation (d533db0f)
- Fixed parsing of the db..table1 form (e243a867)
SQL Optimization
- No decorrelation when a scalar subquery contains a limit clause (dba13e3c)
SQL Parsing & Database Support
- Added the ValueExpressionTableExpr query model (0d59bc84)
- Fixed Hive online partition-clause parsing and added rewrite logic for RuleCalculationOnDistributedColumns (32351dc0)
- Fixed value-expression alias cloning and renamed ValueExpressionWithTableExpr (568a5180)
- Added JSON_AGG as an aggregate function (7352ad85)
- BRACKET_QUOTE_ID now applies to SQL Server only (945dd90d)
- Hive rules and foundation updates (b46157f4)
- Reorganised the Hive rules directory (d11b206c)
- Improved Hive online DDL parsing and fixed the distribute and cluster clauses (ebc55cbf)
- KEY is allowed as an identifier (fa7d121e)
SQL Review
- Excluded a set of audit rules for temporary tables (IfExists, naming conventions, required comments, required primary keys and others) (0bb5181d)
- The unconditional-DML rule no longer fires for cursor-based operations (48fa0bd8)
- Fixed the index-invalidating-expression rule for ifnull (710defcd)
- The SQL inside a view definition is reviewed, not the view itself (792d4d35)
- Fixed the afterRules invocation (f2b51c1c)
SQL Optimization
- No query folding when a subquery’s table references belong to one join (6c0fe6cf)
Index Recommendation
- A * select list can still be an index-only candidate inside an exists subquery (3579594b)
- The index analysis section is hidden when there are no indexes (a8e88eb3)
- Fixed candidate-index merging and join-column index recommendation with nested tables (e44c2ddd)
- Fixed index recommendation missing columns wrapped in functions or expressions as index-only candidates (f3533ba8)
SQL Parsing & Database Support
- Expanded SQL Server syntax: set col1 += col2, insert into table exec, char(max), percentage literals, UNIQUEIDENTIFIER, type method calls abc::method() and more (48fa0bd8)
- SQL Server: columnstore indexes, table/query hints and remote table references (48fa0bd8)
- Cursor-based data modification (delete/update), with more robust procedure, trigger and function parsing (48fa0bd8)
- Fixed SQL Server temporary-table and identity-column parsing (4be37bc0)
- In script parsing, an unqualified column with a single table is assigned to that table (719d203a)
- Fixed SQL Server table definition parsing (723b5421)
- Fixed view parsing and audit optimisation (7712f0ba)
- SQL review supports TSQL scripts (7a73e69d)
- Identifiers may contain $ on Oracle and PostgreSQL (7f08c6ee)
- Fixed parsing when a file starts with a separator (d47168b6)
- Added trigger parsing and improved parsing of insignificant text (ee203bbf)
- The table-object stack is initialised at the start of each parse (ef2c95fe)
- SQL Server: varchar datatype declarations (f8787e9a)
- SQL Server: db..tab table references (f8787e9a)
- SQL Server: inline non-clustered index definitions in CREATE TABLE (f8787e9a)
SQL Review
- TableR011 no longer reports a violation when the start value is empty (c7131b65)
SQL Optimization
- Filter-predicate pushdown excludes the same query block (2d796c0a)
- Fixed the subquery decorrelation algorithm (RulePredicatesSSQRewrite, RuleSelectSSQRewrite) (43af40c5, b14f7c13)
- Scalar subqueries with several differently shaped select columns can be decorrelated (8037c0ff)
- Predicates of scalar subqueries are no longer pushed down (b08c5d22)
SQL Parsing & Database Support
- The SQL parse entry point moved to root (04238700)
- exists is no longer treated as an identifier (04238700)
- String literals do not support backslash escapes on non-MySQL databases (19004aad)
- MySQL string literals may use double quotes (3032ce44)
- Fixed index usage in explain parsing for Dameng and Oracle (4d30d10d)
- Fixed foreign-key definition parsing, unqualify and table-hint grammar, and consolidated the grammar files (54ee9a1d)
- Fixed Position function parsing and output (57847dcd)
- Fixed index-usage parsing in Dameng execution plans (5a5afd28)
- SQL Server now uses SQLScriptParser; script parsing has a single entry point (7dc60408)
- Added Chinese full-width whitespace (85b83ebf)
- Added the TSQL parser and SQL script visitor (90858b4d)
- Added a TDSQL adaptation branch (c5437b04)
- SQL Server: local and global temporary table keywords (c9800b0e)
- SQL Server string literals do not support backslash escapes (de5817dc)
- SQL Server: alias assignment select uid = col from t (e73f987b)
SQL Review
- Every SQL statement produces a QueryAuditResult (11598ac6)
- CommentsOnTableRequired, CommentsOnColumnRequired, SpecificColumnsRequired and NumOfIndexesExceedThreshold now run after all statements are processed (2f7b62d5)
- DDL rules are included in pawsql optimize (a9ff137e)
- SQLAdvisor gives every SQL statement a QueryAuditResult (ea0e08db)
SQL Optimization
- Parameters are no longer substituted when performance validation is off (085043d8)
- Filter-predicate pushdown now reaches derived tables (4782fce6, 2102304b)
- Added the RuleLateralQueryRewrite rule (6fa75c49)
- Query folding supports lateral subqueries (79bb864c)
- Fixed RuleOrCond4SelectRewrite when only aggregates appear without a group by (8fc0acde)
- findQuerySelect locates scalar subqueries inside If, Cast and similar expressions (954beba8)
Index Recommendation
- MySQL primary-key column removal now runs before index deduplication (19b4eb88)
- The parser and writer handle outer-join (+), and index recommendation accounts for it (21d6e3b9)
- Added the ubtree index type and allow BUCKET as an identifier (b605577a)
SQL Parsing & Database Support
- Fixed qualifier resolution and multi-table update output (10f364ee)
- Fixed dateTimeFunctionCall syntax (300536f5)
- Added PLSQL_VAR (44424653)
- Added parsing for aggfunction2 (5e1a1511)
- Added json_table syntax (5f362e66)
- Fixed select-list retrieval when the query defines no table (8166da4a)
- Minor changes (89a0b7ef)
- Columns are matched from table references first, then pseudo columns are checked (8a73f11c)
- FunctionChron accepts any identifier as its value (9245d041)
- Improved summary output (a3cb3d61)
- Fixed values-table query analysis and plan analysis for correlated SQL Server tables (b7ba2d9a)
- The SQL parser supports comment statements (c8202032)
- SQL Server: for xml clause (cad1d79a, 3921268a)
- SQL Server: optional SSL (d83fcc89, 154502b1)
- Improved syntax error output (e3e94dbb)
- Fixed trim function parsing and QueryValues (f0fac4aa)
- More accurate syntax error messages (f42ded27)
SQL Review
- Fixed RuleFuncWithColumnInPredicate when an alias is referenced (71a9fdb6)
- Fixed RulePredicateSSQRewrite output and RuleFuncWithColumnInPredicate (863e44d3)
- Extended the IfExists rule to alter index (9200931d)
- Enabled RuleViewResolvingRewrite (d84b645d)
SQL Optimization
- Columns named like ***valid get a reduced filter factor (0421c0e2)
- Query folding re-enabled for Oracle and Dameng (2e586c1f)
- Reverted limit/order by handling for union all (357ace48)
- Fixed second-round rewriting (9101a4ab)
Index Recommendation
- Foreign keys are assigned index names; RuleOrCond4SelectRewrite enables union all (09efa77d)
- Index recommendation considers join order when ordering foreign keys (a6bdd2fa, 6ff0ecc1)
- SQL audit gained index recommendation and produces more concise index analysis (e3054ffb)
SQL Parsing & Database Support
- Fixed WithTable with a single table reference (052b4be3)
- Reworked source writer output with compressed and uncompressed modes (0f789148, 0198522a, 2965364a, d47f5627)
- Fixed the query analyzer (24d7e6df)
- Fixed multi-statement grammar (288952a6)
- Connections are released on close (64a8eb95)
- SQL Server: autoCommit = true (73f4bb5d, 2ae8f8de)
- Fixed Oracle view parsing (7d0783dc)
- Escaped angle brackets in SQL text are restored to < and > (898d2aed)
- SQL Server: table hints (NOLOCK) directly after a table reference (a6a0b963)
- Fixed a general defect (b0c66548)
- Added topN syntax (c81b0e7a)
- Added full-width whitespace support (cddae7b9)
- Added alter index rename and visible (e0794c86)
- Local and global variables are substituted into queries (ea71a2f6)
- Added SELECT … INTO a temporary table (f34dec3e)
SQL Review
- Improved RuleFuncWithColumnInPredicate (0ffb06df)
SQL Optimization
- Fixed LimitClausePushDown (de32cd63)
- Added the RuleOrCond2InPredicateRewrite rule (eb612ed3, f09b66c4)
SQL Parsing & Database Support
- SQL Server: GO as a statement separator (19e33834)
- DML statements support WITH tables (2a8f7f97, f213ace3, 200afb0d, f408144e)
- SQL Server: local and global variable definitions (4aef7700, d5b52bc2)
- SQL Server: ALTER TABLE [db].[schema].[table] ADD column (6e465766)
- SQL Server: #table temporary tables (9935e185)
- A single-table update/delete assigns its columns to that table (c7841334)
- SQL Server: cross/outer apply (f408144e)
- Predicates are accepted as function parameters (f408144e)
- SQL Server: VARCHAR(MAX) (f408144e)
- Fixed the MSSQL validator and SQL Server limit syntax (faaf5a2e)
- Fixed fullcolumnname parsing (fff2dcd5)
SQL Review
- Fixed a defect in RuleDiffDatatypeOfJoinColumns (215bf615)
- Added 10 audit rules for sharding and invalid indexes (6b4f9652)
- Reworked RuleUseKeyAsShardingKey and added RuleNoEqualFilterOnShardingKeys4DML and RuleDMLWithJoinInShardingDatabase (9cd177b8)
- Renamed the newly added audit rules (fa4383ab)
SQL Optimization
- Tables and base tables gained collected fields for data size, index size, dirtyRate and more (0dd4e2b4)
- Fixed a defect in RuleOrCond4SelectRewrite (6caca103, 6afe9cd6, fd67fe58, 965d4570)
- Collect table and index sizes, dirtyRate and statistics timestamps for the PostgreSQL family (78a15946)
- Fixed rewriting update into a query for performance validation (9a3f1682)
- Collect table and index sizes plus dirtyRate for MySQL (cca9aebd)
Index Recommendation
- The online DDL parser marks indexes with an isValid attribute (5ef89ca6)
- Indexes gained a valid attribute (c51fcce3)
- Added index visibility for PostgreSQL, openGauss, MySQL, Kingbase and others (f2714f6f)
SQL Parsing & Database Support
- Fixed a null result-column container (196ebe9e)
- Fixed table correlation when columns carry aliases (2f8fea0f)
- Fixed check-constraint syntax and added sharding syntax for TDSQLX and gaussdbx (3b6af34c)
- Added the gaussdbx database type (42879da1)
- Fixed online DDL parsing for Dameng (4a46b9db)
- Removed the legacy DDL parser (520ca6cb)
- Fixed Hive minor-type configuration parsing (57a83635)
- Added alter table drop/truncate partition (61bf8e19)
- Added DDL parsing for OceanBase (637fe2cd)
- Fixed MySQL X Protocol replication syntax (63cdcd8f)
- Improved Hive syntax support (648385a8)
- Tables gained distributeClause; PolarDB-X supports SINGLE/BROADCAST distribution (7264db62, b74b4c8f)
- Fixed PostgreSQL double-quote and update-statement parsing (807c39fd)
- Fixed DataType equality (8316106c)
- The online DDL parser supports local indexes for Kingbase and PostgreSQL (9933271f)
- Added PolarDB-X support (badd517d)
- Fixed value-expression lookup for multi-table update statements (bf9b9318)
- The DDL parser supports include and condition indexes (dbda10eb)
- Fixed parsing when a table has several constraints with the same name (ea7eb51c)
- Added named functions (eac2f1b5)
- Added audit support for OceanBase (f7afdd04)
SQL Review
- Improved the output of RuleDiffDatatypeOfJoinColumns (16b4c504)
- Fixed a defect in RuleFuncWithColumnInPredicate (5efc9166)
- Fixed a defect in RuleNoCond4NonAggSelectWarning (bd43f443)
SQL Optimization
- ValueExpressionHelper gained isCorrelated support (427db33c)
- Fixed a defect in the driving-table logic (isCorrelated) (5d626ed2)
- Dameng no longer uses query folding (fe398804)
Index Recommendation
- Fixed index matching for MySQL and PostgreSQL (39e4ad0c)
- Index validation gained an indexClean capability and parses create trigger without code blocks (93815aea)
SQL Parsing & Database Support
- Added TDSQLX for MySQL support with a matching validator (110e0aad)
- Fixed nested value expression parsing (3ae8ef51)
- Oracle execution plans now output the full explain information (3afb5163)
- MySQL connection strings default to allowPublicKeyRetrieval=true (5adbc480)
- Fixed table row-count retrieval (5f4cbf62)
- Fixed online index metadata parsing for Dameng (8f243acc)
- Fixed group_concat parsing and output (a4fc13ea, eeafd70d)
- Fixed table reference parsing (bc60348f)
- Fixed datatype expressions (dc1e2e71)
- Operators now serialise to real literals (f056e084)