Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 50 additions & 13 deletions .claude/backend_development.md
Original file line number Diff line number Diff line change
Expand Up @@ -269,35 +269,72 @@ Every dialect inherits from:

##### Current Protocols and Mixins (Main Package)

Names below are the ones the core package actually defines, checked against
`backend/dialect/protocols/` and `backend/dialect/mixins/`. A few of the
protocols have no mixin of their own — their formatter lives in a broader one,
and the column says which. `NamespaceSupport` is the naming protocol, not a DDL
one: it answers whether a name may be *qualified* with a catalog or a schema,
which is a different question from whether the engine has those objects at all
(`CreateSchemaSupport` / `CreateDatabaseSupport`).

| Protocol | Mixin | Description |
|----------|-------|-------------|
| `WindowFunctionSupport` | `WindowFunctionMixin` | Window functions (OVER, PARTITION BY) |
| `CTESupport` | `CTEMixin` | Common Table Expressions (WITH clause) |
| `AdvancedGroupingSupport` | `AdvancedGroupingMixin` | ROLLUP, CUBE, GROUPING SETS |
| `ReturningSupport` | `ReturningMixin` | RETURNING clause |
| `AdvancedGroupingSupport` | `DQLMixin` | ROLLUP, CUBE, GROUPING SETS (`format_grouping_clause`) |
| `DqlOrderSupport` | `DQLMixin` | ORDER BY in a query part |
| `ReturningSupport` | `DMLMixin` | RETURNING clause (`format_returning_clause`) |
| `UpsertSupport` | `UpsertMixin` | UPSERT operations (ON CONFLICT) |
| `LateralJoinSupport` | `LateralJoinMixin` | LATERAL joins |
| `ArraySupport` | `ArrayMixin` | Array types and operations |
| `JSONSupport` | `JSONMixin` | JSON types and operations |
| `ExplainSupport` | `ExplainMixin` | EXPLAIN statement |
| `FilterClauseSupport` | `FilterClauseMixin` | FILTER clause for aggregates |
| `OrderedSetAggregationSupport` | `OrderedSetAggregationMixin` | WITHIN GROUP (ORDER BY) |
| `FilterClauseSupport` | `ExpressionMixin` | FILTER clause for aggregates |
| `OrderedSetAggregationSupport` | `ExpressionMixin` | WITHIN GROUP (ORDER BY) |
| `MergeSupport` | `MergeMixin` | MERGE statement |
| `TemporalTableSupport` | `TemporalTableMixin` | FOR SYSTEM_TIME queries |
| `QualifyClauseSupport` | `QualifyClauseMixin` | QUALIFY clause |
| `LockingSupport` | `LockingMixin` | FOR UPDATE, SKIP LOCKED |
| `QualifyClauseSupport` | `DQLMixin` | QUALIFY clause |
| `LockingSupport` | `DQLMixin` | FOR UPDATE, SKIP LOCKED (`format_for_update_clause`) |
| `GraphSupport` | `GraphMixin` | Graph queries (MATCH) |
| `GraphTableSupport` | `GraphTableMixin` | GRAPH_TABLE row source (SQL/PGQ) |
| `JoinSupport` | `JoinMixin` | JOIN operations |
| `WildcardSupport` | `DQLMixin` | `*` and `table.*` expansion |
| `SetOperationSupport` | `SetOperationMixin` | UNION, INTERSECT, EXCEPT |
| `ILIKESupport` | `ILIKEMixin` | Case-insensitive LIKE |
| `TableSupport` | `TableMixin` | CREATE/DROP/ALTER TABLE |
| `ViewSupport` | `ViewMixin` | CREATE/DROP VIEW |
| `CollationSupport` | `CollationMixin` | COLLATE |
| `DateTimeSupport` | `DateTimeMixin` | Date and time parts |
| `DataTypeSupport` | `DataTypeMixin` | Type spelling (`format_data_type_*`) |
| `PivotSupport` | `PivotMixin` | PIVOT / UNPIVOT |
| `PartitionSupport` | `PartitionMixin` | Table partitioning |
| `ConstraintSupport` | `ConstraintMixin` / `DDLColumnMixin` | Column and table constraints |
| `IntrospectionSupport` | `IntrospectionMixin` | Catalog introspection queries |
| `TransactionControlSupport` | `TransactionControlMixin` | BEGIN / COMMIT / ROLLBACK |
| `CommentSupport` | `CommentOnMixin` | COMMENT ON |
| `GeneratedColumnSupport` | `GeneratedColumnMixin` | Generated (computed) columns |
| `AutoIncrementSupport` | `AutoIncrementMixin` | IDENTITY / AUTO_INCREMENT |
| `AlterTableModifierSupport` | `SQLServerAlterColumnModifierMixin` (backend) | Backend-only ALTER TABLE options |
| `CreateTableSupport` / `DropTableSupport` / `AlterTableSupport` | `TableMixin` | CREATE / DROP / ALTER TABLE |
| `CreateTableAsSupport` / `CreateTableLikeSupport` / `CreateTableCloneSupport` / `CreateTableUsingTemplateSupport` | `TableMixin` | The other CREATE TABLE forms |
| `CreateViewSupport` / `DropViewSupport` | `ViewMixin` | CREATE / DROP VIEW |
| `MaterializedViewSupport` | `ViewMixin` | CREATE / DROP / REFRESH MATERIALIZED VIEW |
| `TruncateSupport` | `TruncateMixin` | TRUNCATE TABLE |
| `SchemaSupport` | `SchemaMixin` | CREATE/DROP SCHEMA |
| `IndexSupport` | `IndexMixin` | CREATE/DROP INDEX |
| `SequenceSupport` | `SequenceMixin` | CREATE/DROP/ALTER SEQUENCE |
| `TriggerSupport` | `TriggerMixin` | CREATE/DROP TRIGGER (SQL:1999) |
| `FunctionSupport` | `FunctionMixin` | CREATE/DROP FUNCTION (SQL/PSM) |
| `CreateSchemaSupport` / `DropSchemaSupport` | `SchemaMixin` | CREATE / DROP SCHEMA |
| `CreateIndexSupport` / `DropIndexSupport` / `FulltextIndexSupport` | `IndexMixin` | CREATE / DROP INDEX, FULLTEXT INDEX |
| `CreateSequenceSupport` / `DropSequenceSupport` / `AlterSequenceSupport` | `SequenceMixin` | CREATE / DROP / ALTER SEQUENCE |
| `CreateTriggerSupport` / `DropTriggerSupport` | `TriggerMixin` | CREATE / DROP TRIGGER (SQL:1999) |
| `CreateRoutineSupport` / `DropRoutineSupport` / `SQLFunctionSupport` | `FunctionMixin` | CREATE / DROP FUNCTION and PROCEDURE (SQL/PSM) |
| `CreateTypeSupport` / `AlterTypeSupport` / `DropTypeSupport` | `UserDefinedTypeMixin` | CREATE / ALTER / DROP TYPE |
| `CreateDomainSupport` / `AlterDomainSupport` / `DropDomainSupport` | `DomainMixin` | CREATE / ALTER / DROP DOMAIN |
| `CreateDatabaseSupport` / `DropDatabaseSupport` / `AlterDatabaseSupport` | `DatabaseMixin` | CREATE / DROP / ALTER DATABASE |
| `SQLXMLSupport` and the five `SQLXML*Support` protocols | `SQLXMLMixin` and its five siblings | SQL/XML and XQuery |
| `TableObjectSupport`, `ViewObjectSupport`, `IndexObjectSupport`, `SequenceObjectSupport`, `TypeObjectSupport`, `RoutineObjectSupport`, `TriggerObjectSupport`, `SynonymObjectSupport`, `MaterializedViewObjectSupport`, `ForeignTableObjectSupport`, `PropertyGraphObjectSupport` | `TableNameMixin`, `ViewNameMixin`, … (one per kind) | Naming a catalogue object |
| `NamespaceSupport` | `NamespaceMixin` | Which namespace levels a name may be qualified with |

The naming protocols are per object kind rather than one: each kind's
`format_<kind>_object` lives in its own `*NameMixin`, and all of them are
`NamespaceMixin` subclasses, which is where `validate_namespace` and
`format_qualified_name` live. A dialect overrides the one kind it spells
differently and inherits the rest.

##### Principles for Adding New Protocols/Mixins

Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
- name: Install activerecord and testsuite from PyPI
run: |
pip install "rhosocial-activerecord @ git+https://github.com/rhosocial/python-activerecord.git@release/v1.0.0.dev30"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@release/v1.0.0.dev17"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@feature/expression-schema-object-refactor"

Check warning on line 63 in .github/workflows/test.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Using dependencies without locking resolved versions is security-sensitive.

See more on https://sonarcloud.io/project/issues?id=rhosocial_python-activerecord-sqlserver&issues=AaEYBKvGD7_tHekd1VVA&open=AaEYBKvGD7_tHekd1VVA&pullRequest=7

- name: Create test database
run: |
Expand Down Expand Up @@ -150,7 +150,7 @@
- name: Install activerecord and testsuite from PyPI
run: |
pip install "rhosocial-activerecord @ git+https://github.com/rhosocial/python-activerecord.git@release/v1.0.0.dev30"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@release/v1.0.0.dev17"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@feature/expression-schema-object-refactor"

Check warning on line 153 in .github/workflows/test.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Omitting "--only-binary :all:" can lead to the execution of setup scripts. Make sure it is safe here.

See more on https://sonarcloud.io/project/issues?id=rhosocial_python-activerecord-sqlserver&issues=AaEYBKvGD7_tHekd1VVB&open=AaEYBKvGD7_tHekd1VVB&pullRequest=7

- name: Create test database
run: |
Expand Down Expand Up @@ -240,7 +240,7 @@
- name: Install activerecord and testsuite from PyPI
run: |
pip install "rhosocial-activerecord @ git+https://github.com/rhosocial/python-activerecord.git@release/v1.0.0.dev30"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@release/v1.0.0.dev17"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@feature/expression-schema-object-refactor"

Check warning on line 243 in .github/workflows/test.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Omitting "--only-binary :all:" can lead to the execution of setup scripts. Make sure it is safe here.

See more on https://sonarcloud.io/project/issues?id=rhosocial_python-activerecord-sqlserver&issues=AaEYBKvGD7_tHekd1VVD&open=AaEYBKvGD7_tHekd1VVD&pullRequest=7

- name: Create test database
run: |
Expand Down Expand Up @@ -330,7 +330,7 @@
- name: Install activerecord and testsuite from PyPI
run: |
pip install "rhosocial-activerecord @ git+https://github.com/rhosocial/python-activerecord.git@release/v1.0.0.dev30"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@release/v1.0.0.dev17"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@feature/expression-schema-object-refactor"

Check warning on line 333 in .github/workflows/test.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Using dependencies without locking resolved versions is security-sensitive.

See more on https://sonarcloud.io/project/issues?id=rhosocial_python-activerecord-sqlserver&issues=AaEYBKvGD7_tHekd1VVG&open=AaEYBKvGD7_tHekd1VVG&pullRequest=7

- name: Create test database
run: |
Expand Down Expand Up @@ -420,7 +420,7 @@
- name: Install activerecord and testsuite from PyPI
run: |
pip install "rhosocial-activerecord @ git+https://github.com/rhosocial/python-activerecord.git@release/v1.0.0.dev30"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@release/v1.0.0.dev17"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@feature/expression-schema-object-refactor"

- name: Create test database
run: |
Expand Down Expand Up @@ -510,7 +510,7 @@
- name: Install activerecord and testsuite from PyPI
run: |
pip install "rhosocial-activerecord @ git+https://github.com/rhosocial/python-activerecord.git@release/v1.0.0.dev30"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@release/v1.0.0.dev17"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@feature/expression-schema-object-refactor"

Check warning on line 513 in .github/workflows/test.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Omitting "--only-binary :all:" can lead to the execution of setup scripts. Make sure it is safe here.

See more on https://sonarcloud.io/project/issues?id=rhosocial_python-activerecord-sqlserver&issues=AaEYBKvGD7_tHekd1VVJ&open=AaEYBKvGD7_tHekd1VVJ&pullRequest=7

- name: Create test database
run: |
Expand Down Expand Up @@ -601,7 +601,7 @@
- name: Install activerecord and testsuite from PyPI
run: |
pip install "rhosocial-activerecord @ git+https://github.com/rhosocial/python-activerecord.git@release/v1.0.0.dev30"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@release/v1.0.0.dev17"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@feature/expression-schema-object-refactor"

Check warning on line 604 in .github/workflows/test.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Omitting "--only-binary :all:" can lead to the execution of setup scripts. Make sure it is safe here.

See more on https://sonarcloud.io/project/issues?id=rhosocial_python-activerecord-sqlserver&issues=AaEYBKvGD7_tHekd1VVL&open=AaEYBKvGD7_tHekd1VVL&pullRequest=7

- name: Create test database
run: |
Expand Down Expand Up @@ -691,7 +691,7 @@
- name: Install activerecord and testsuite from PyPI
run: |
pip install "rhosocial-activerecord @ git+https://github.com/rhosocial/python-activerecord.git@release/v1.0.0.dev30"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@release/v1.0.0.dev17"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@feature/expression-schema-object-refactor"

Check warning on line 694 in .github/workflows/test.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Omitting "--only-binary :all:" can lead to the execution of setup scripts. Make sure it is safe here.

See more on https://sonarcloud.io/project/issues?id=rhosocial_python-activerecord-sqlserver&issues=AaEYBKvGD7_tHekd1VVN&open=AaEYBKvGD7_tHekd1VVN&pullRequest=7

Check warning on line 694 in .github/workflows/test.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Using dependencies without locking resolved versions is security-sensitive.

See more on https://sonarcloud.io/project/issues?id=rhosocial_python-activerecord-sqlserver&issues=AaEYBKvGD7_tHekd1VVO&open=AaEYBKvGD7_tHekd1VVO&pullRequest=7

- name: Create test database
run: |
Expand Down Expand Up @@ -790,7 +790,7 @@
- name: Install activerecord and testsuite from PyPI
run: |
pip install "rhosocial-activerecord @ git+https://github.com/rhosocial/python-activerecord.git@release/v1.0.0.dev30"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@release/v1.0.0.dev17"
pip install "rhosocial-activerecord-testsuite @ git+https://github.com/rhosocial/python-activerecord-testsuite.git@feature/expression-schema-object-refactor"

Check warning on line 793 in .github/workflows/test.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Using dependencies without locking resolved versions is security-sensitive.

See more on https://sonarcloud.io/project/issues?id=rhosocial_python-activerecord-sqlserver&issues=AaEYBKvGD7_tHekd1VVQ&open=AaEYBKvGD7_tHekd1VVQ&pullRequest=7

Check warning on line 793 in .github/workflows/test.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Omitting "--only-binary :all:" can lead to the execution of setup scripts. Make sure it is safe here.

See more on https://sonarcloud.io/project/issues?id=rhosocial_python-activerecord-sqlserver&issues=AaEYBKvGD7_tHekd1VVP&open=AaEYBKvGD7_tHekd1VVP&pullRequest=7

- name: Create test database
run: |
Expand Down
1 change: 1 addition & 0 deletions changelog.d/7.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add the SQL Server catalogue objects and namespace support: `SQLServerTable` — a table whose `#` temporary form is a construction-time field folded into its name and identity — plus `PartitionFunction` and `PartitionScheme` (rendered through the new `format_partition_function_object`/`format_partition_scheme_object` formatters) are exported from `rhosocial.activerecord.backend.impl.sqlserver.expression`, and the dialect implements core's `NamespaceSupport` with one object protocol per catalogue kind, so a schema object carries catalog, schema and name, every level is rendered and validated against SQL Server's 128-character identifier cap, and `format_object_id_name` provides the one deliberate bracket-free spelling `OBJECT_ID` needs.
1 change: 1 addition & 0 deletions changelog.d/7.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Change how the SQL Server expressions encode two tri-state options and make every unsupported spelling fail closed: `SQLServerAlterColumn` now takes `not_null`/`nullable` (setting both raises `ValueError`), so `not_null=False` — which used to spell `NULL` — now means unspecified and callers wanting `NULL` must pass `nullable=True`; `SQLServerColumnstoreIndexExpression` now takes `clustered`/`nonclustered` (setting both raises `ValueError`), so `clustered=False` — which used to spell `NONCLUSTERED` — now means no keyword and callers wanting `NONCLUSTERED` must pass `nonclustered=True`, while `validate()` accepts key columns for the bare form the server records as NONCLUSTERED. The dialect consumes the two-spelling clause pairs (sequence `cycle`/`no_cycle` and `cache`/`no_cache`, identity `cycle`/`no_cycle`, `order`/`no_order` and `cache`/`no_cache`, set-operation `all_`/`distinct`, `TRUNCATE` and `DROP VIEW`/`DROP SCHEMA` `cascade`/`restrict` and `restart_identity`/`continue_identity`, constraint `deferrable`/`not_deferrable`, `initially_deferred`/`initially_immediate` and `enforced`/`not_enforced`, transaction `deferrable`/`not_deferrable` and `wait`/`no_wait`): an explicit spelling the dialect cannot express now raises `UnsupportedFeatureError` naming the requested spelling instead of rendering SQL that silently dropped it, and an unset pair renders nothing where the old encoding spelled a negative form. Formatters that name a catalogue object now check the object's kind, raising `TypeError` instead of rendering a well-formed statement over the wrong kind's name.
1 change: 1 addition & 0 deletions changelog.d/7.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Declare the SQL Server capability probes from measurement rather than inheriting core's defaults, and make them load-bearing. The sequence probes answer 2012+ for `supports_sequence`, `supports_alter_sequence` and every option the engine spells, with `supports_sequence_if_exists` at 2016+ (the deleted local `DROP SEQUENCE` renderer had gated `IF EXISTS` on 2012) and `supports_alter_sequence_start` answering `False` from its own ALTER-side question — `ALTER SEQUENCE ... START WITH` is rejected with error 11710 and `RESTART WITH` is the engine's spelling, while `ORDER` and `OWNED BY` have no spelling at all. The identity probes declare `IDENTITY(seed, increment)` (`supports_identity_column` and start/increment `True`) and answer `False` for `ALWAYS`, `MINVALUE`/`MAXVALUE`/`CYCLE`/`ORDER`/`CACHE` — `ALWAYS` had been silently downgraded to the bare property and the options dropped — with `supports_auto_increment_column` `False`. The four master probes are measured too: `supports_truncate` `True`, `supports_with_data_clause` `False`, `supports_materialized_cte` `False` and `supports_transaction_wait` `False`, whose probing trap is that `BEGIN TRANSACTION WAIT` is accepted only because the server reads `WAIT` as the transaction name.
1 change: 1 addition & 0 deletions changelog.d/7.internal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Follow core's protocol package split: the dialect now declares `NamespaceSupport` plus one `*ObjectSupport` protocol per catalogue kind and one support protocol per DDL statement (`CreateTableSupport`/`DropTableSupport`/`AlterTableSupport`, `CreateSchemaSupport`/`DropSchemaSupport`, `CreateIndexSupport`/`DropIndexSupport`/`FulltextIndexSupport`, `CreateTypeSupport`/`DropTypeSupport`), with `SQLServerTableSupport` deriving from `TableObjectSupport` and `SQLServerUserDefinedTypeSupport` from `CreateTypeSupport`/`DropTypeSupport`; this backend's protocols and its CLI introspection have moved off the old `TableSupport`/`SchemaSupport`/`IndexSupport`/`FunctionSupport`/`TriggerSupport`/`SequenceSupport`/`ViewSupport` names, so custom subclasses that referenced them must move to the new ones. The local `CREATE SEQUENCE`/`DROP SEQUENCE` renderer overrides are deleted in favour of core's shared probe-gated renderers and `format_next_value_for` now takes `SQLServerNextValueForExpression` instead of `Any`; `.claude/backend_development.md` records the protocol-to-mixin mapping, and CI keeps core pinned to `release/v1.0.0.dev30` while the testsuite installs from its round branch.
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,9 @@ def format_alter_column_type_action(self, action: Any) -> Tuple[str, tuple]:
if collate:
parts.append(f"COLLATE {collate}")

not_null = getattr(action, "not_null", None)
if not_null is not None:
not_null = getattr(action, "not_null", False)
nullable = getattr(action, "nullable", False)
if not_null or nullable:
parts.append("NOT NULL" if not_null else "NULL")

if getattr(action, "sparse", False):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -262,8 +262,7 @@ async def _get_scope_identity_async(self) -> Optional[int]:

async def set_identity_insert(self, table: str, on: bool = True) -> None:
"""Enable or disable IDENTITY_INSERT for a table (async)."""
state = "ON" if on else "OFF"
sql = f"SET IDENTITY_INSERT {self.dialect.format_identifier(table)} {state}"
sql, _params = self.dialect.format_set_identity_insert(table, on)
async with await self._get_cursor() as cursor:
await cursor.execute(sql)

Expand Down
22 changes: 11 additions & 11 deletions src/rhosocial/activerecord/backend/impl/sqlserver/cli/info.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,22 +24,22 @@
ExplainSupport,
GraphSupport,
SetOperationSupport,
ViewSupport,
TableSupport,
ViewObjectSupport,
TableObjectSupport,
TruncateSupport,
GeneratedColumnSupport,
TriggerSupport,
FunctionSupport,
TriggerObjectSupport,
RoutineObjectSupport,
AdvancedGroupingSupport,
ArraySupport,
ILIKESupport,
IndexSupport,
IndexObjectSupport,
LockingSupport,
MergeSupport,
OrderedSetAggregationSupport,
QualifyClauseSupport,
SchemaSupport,
SequenceSupport,
NamespaceSupport,
SequenceObjectSupport,
TemporalTableSupport,
)

Expand Down Expand Up @@ -77,10 +77,10 @@
],
"Transaction & Locking": [LockingSupport, TemporalTableSupport],
"Query Analysis": [ExplainSupport, GraphSupport, QualifyClauseSupport],
"DDL - Table": [TableSupport, TruncateSupport, GeneratedColumnSupport],
"DDL - View": [ViewSupport],
"DDL - Schema & Index": [SchemaSupport, IndexSupport],
"DDL - Sequence & Trigger": [SequenceSupport, TriggerSupport, FunctionSupport],
"DDL - Table": [TableObjectSupport, TruncateSupport, GeneratedColumnSupport],
"DDL - View": [ViewObjectSupport],
"DDL - Schema & Index": [NamespaceSupport, IndexObjectSupport],
"DDL - Sequence & Trigger": [SequenceObjectSupport, TriggerObjectSupport, RoutineObjectSupport],
"String Matching": [ILIKESupport],
"SQL Server Native": [
SQLServerIndexedViewSupport,
Expand Down
Loading
Loading