Skip to main content
This page is generated by 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 ReviewSQL OptimizationSQL Parsing & Database SupportBug Fixes
2026-09-23

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 ReviewSQL Parsing & Database SupportBug Fixes
2026-07-23

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 OptimizationSQL Parsing & Database SupportBug Fixes
2026-06-30

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 ReviewSQL OptimizationSQL Parsing & Database SupportBug Fixes
2026-05-28

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 ReviewSQL OptimizationIndex RecommendationSQL Parsing & Database SupportBug Fixes
2026-04-30

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 ReviewSQL OptimizationIndex RecommendationSQL Parsing & Database SupportBug Fixes
2026-03-30

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 RecommendationSQL Parsing & Database Support
2026-02-25

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 ReviewSQL OptimizationIndex RecommendationSQL Parsing & Database SupportBug Fixes
2026-01-30

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 ReviewSQL OptimizationSQL Parsing & Database SupportBug Fixes
2025-12-29

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 ReviewSQL OptimizationIndex RecommendationSQL Parsing & Database SupportBug Fixes
2025-11-27

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 OptimizationSQL Parsing & Database SupportBug Fixes
2025-10-30

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 ReviewSQL OptimizationIndex RecommendationSQL Parsing & Database SupportBug Fixes
2025-09-30

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 ReviewSQL OptimizationIndex RecommendationSQL Parsing & Database SupportBug Fixes
2025-08-29

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 OptimizationSQL Parsing & Database SupportBug Fixes
2025-07-30

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 ReviewSQL OptimizationIndex RecommendationSQL Parsing & Database SupportBug Fixes
2025-06-27

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 ReviewSQL OptimizationSQL Parsing & Database SupportBug Fixes
2025-05-30

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 ReviewSQL OptimizationIndex RecommendationSQL Parsing & Database SupportBug Fixes
2025-04-30

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 ReviewSQL OptimizationIndex RecommendationSQL Parsing & Database SupportBug Fixes
2025-03-31

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 ReviewSQL OptimizationSQL Parsing & Database SupportBug Fixes
2025-02-27

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)
Index RecommendationSQL Parsing & Database SupportBug Fixes
2025-01-16

Index Recommendation

  • Fixed index merging (f5beaa2e)

SQL Parsing & Database Support

  • Fixed sharded-database detection (044d0179)
  • Added OceanBase (MySQL and Oracle modes) and PolarDB-X 2.0 support (0ca5b1f2, 2c2dc293)
  • Fixed online DDL parsing (19dc6774)
  • Fixed the TDSQLMySQL validator (3288fad0)
SQL ReviewSQL OptimizationIndex RecommendationSQL Parsing & Database SupportBug Fixes
2024-12-31

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 ReviewSQL OptimizationIndex RecommendationSQL Parsing & Database SupportBug Fixes
2024-11-30

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)