+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.
0 commit comments