@neralabs/rerail-pack-sql 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,119 @@
1
+ {
2
+ "format": "rerail.policy/v1",
3
+ "id": "sqlfluff-rf04-references-keywords",
4
+ "revision": 2,
5
+ "mode": "steer",
6
+ "description": "Don't use SQL keywords as unquoted table aliases, column aliases or column names; rename them so they can't be misread.",
7
+ "scope": {
8
+ "include": [
9
+ "**/*.sql"
10
+ ],
11
+ "exclude": []
12
+ },
13
+ "clauses": [
14
+ {
15
+ "id": "keyword-identifier",
16
+ "forbid": {
17
+ "ast": {
18
+ "language": "sql",
19
+ "rule": {
20
+ "kind": "identifier",
21
+ "regex": "(?i)^(?:ABORT|ABSOLUTE|ACCESS|ACCOUNT|ACCOUNTS|ACTION|ADD|ADMIN|AFTER|AGGREGATE|ALIAS|ALL|ALLOW_CONNECTIONS|ALSO|ALTER|ALWAYS|ANALYSE|ANALYZE|AND|ANY|APPLY|ARRAY|AS|ASC|ASSERTION|ASSIGNMENT|ASYMMETRIC|AT|ATOMIC|ATTACH|ATTRIBUTE|AUDIT|AUTHORIZATION|AUTO_INCREMENT|AVG_ROW_LENGTH|BACKUP|BACKWARD|BEFORE|BEGIN|BERNOULLI|BETWEEN|BIGINT|BIGSERIAL|BINARY|BINDING|BIT|BITVAR|BOOL|BOOLEAN|BOTH|BOX|BPCHAR|BREADTH|BREAK|BROWSE|BUFFERS|BULK|BY|BYPASSRLS|BYTEA|CACHE|CALL|CALLED|CASCADE|CASCADED|CAST|CATALOG|CHAIN|CHANGE|CHAR|CHARACTER|CHARACTERISTICS|CHECK|CHECKED|CHECKPOINT|CHECKSUM|CIDR|CIRCLE|CIRCULARSTRING|CLASS|CLOSE|CLUSTER|CLUSTERED|COALESCE|COLLATE|COLLATION|COLUMN|COLUMNS|COMMENT|COMMENTS|COMMIT|COMMITTED|COMPLETION|COMPOUNDCURVE|COMPRESS|COMPRESSION|COMPUTE|CONFIGURATION|CONFLICT|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONTAINSTABLE|CONTENT|CONTINUE|CONVERSION|COPY|CORRELATION|COST|COSTS|CREATE|CREATEDB|CREATEROLE|CREATEUSER|CSV|CUBE|CURRENT|CURRENT_DATE|CURRENT_ROLE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|CURVEPOLYGON|CYCLE|DATA|DATABASE|DATABASES|DATE|DATERANGE|DATETIME|DAY|DAYOFMONTH|DAYOFWEEK|DAYOFYEAR|DAYS|DAY_HOUR|DAY_MICROSECOND|DAY_MINUTE|DAY_SECOND|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFAULTS|DEFERRABLE|DEFERRED|DEFINER|DELAYED|DELAY_KEY_WRITE|DELETE|DELIMITER|DELIMITERS|DENY|DEPENDENCIES|DEPENDS|DEPTH|DESC|DESCRIBE|DESTROY|DESTRUCTOR|DETACH|DETERMINISTIC|DICTIONARY|DISABLE|DISABLE_PAGE_SKIPPING|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DIV|DO|DOCUMENT|DOMAIN|DOUBLE|DROP|DUMMY|DUMP|EACH|ELSE|ELSEIF|EMPTY|ENABLE|ENCLOSED|ENCODING|ENCRYPTED|END|ENUM|ERRLVL|ESCAPE|ESCAPED|EVENT|EXCEPT|EXCLUDE|EXCLUDING|EXCLUSIVE|EXECUTE|EXISTING|EXISTS|EXIT|EXPLAIN|EXPRESSION|EXTENDED|EXTENSION|EXTERNAL|EXTRACT|FALSE|FAMILY|FETCH|FIELDS|FILE|FILLFACTOR|FILTER|FINALIZE|FIRST|FLOAT|FLOAT4|FLOAT8|FLUSH|FOLLOWING|FOR|FORCE|FORCE_NOT_NULL|FORCE_NULL|FORCE_QUOTE|FOREIGN|FORMAT|FORWARD|FREETEXT|FREETEXTTABLE|FREEZE|FROM|FULLTEXT|FUNCTION|FUNCTIONS|FUTURE|GENERATED|GEOGRAPHY|GEOMETRY|GEOMETRYCOLLECTION|GEOMETRYCOLLECTIONM|GEOMETRYCOLLECTIONZ|GEOMETRYCOLLECTIONZM|GLOBAL|GRANT|GRANTED|GRANTS|GREATEST|GROUP|GROUPING|GROUPS|HANDLER|HASH|HAVING|HEADER|HEAP|HIGH_PRIORITY|HOLD|HOLDLOCK|HOST|HOSTS|HOUR|HOUR_MICROSECOND|HOUR_MINUTE|HOUR_SECOND|ICU|IDENTIFIED|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|ILIKE|IMMEDIATE|IMMUTABLE|IMPLICIT|IMPORT|IMPORTED|IN|INCLUDE|INCLUDING|INCREMENT|INDEX|INDEXES|INDEX_CLEANUP|INET|INFILE|INFIX|INHERIT|INHERITS|INITIALIZE|INITIALLY|INLINE|INOUT|INPUT|INSENSITIVE|INSERT|INSERT_ID|INSTEAD|INT|INT1|INT2|INT3|INT4|INT4RANGE|INT8|INT8RANGE|INTEGER|INTEGRATION|INTEGRATIONS|INTERSECT|INTERVAL|INTO|INVOKER|IS|ISAM|ISNULL|ISOLATION|IS_SUPERUSER|IS_TEMPLATE|ITERATE|JSON|JSONB|KEY|KEYS|KILL|LABEL|LANCOMPILER|LANGUAGE|LARGE|LAST|LAST_INSERT_ID|LATERAL|LC_COLLATE|LC_CTYPE|LEADING|LEAKPROOF|LEAST|LEAVE|LEFTARG|LESS|LEVEL|LIBC|LIKE|LIMIT|LINE|LINENO|LINES|LINESTRING|LINESTRINGM|LINESTRINGZ|LINESTRINGZM|LIST|LISTEN|LOAD|LOCAL|LOCALE|LOCALTIME|LOCALTIMESTAMP|LOCATION|LOCK|LOCKED|LOCKS|LOGGED|LOGIN|LOGS|LOG_VERBOSITY|LONG|LONGBLOB|LONGTEXT|LOOP|LOW_PRIORITY|LSEG|MACADDR|MACADDR8|MAIN|MANAGE|MAPPING|MASKING|MATCH|MATCHED|MATERIALIZED|MAXEXTENTS|MAXVALUE|MAX_ROWS|MCV|MEDIUMBLOB|MEDIUMINT|MEDIUMTEXT|MERGE|METHOD|MIDDLEINT|MILLISECOND|MINUS|MINUTE|MINUTE_MICROSECOND|MINUTE_SECOND|MINVALUE|MIN_ROWS|ML|MLSLABEL|MODE|MODEL|MODIFY|MODULUS|MONEY|MONITOR|MONTH|MONTHNAME|MOVE|MULTICURVE|MULTILINESTRING|MULTILINESTRINGM|MULTILINESTRINGZ|MULTILINESTRINGZM|MULTIPOINT|MULTIPOINTM|MULTIPOINTZ|MULTIPOINTZM|MULTIPOLYGON|MULTIPOLYGONM|MULTIPOLYGONZ|MULTIPOLYGONZM|MULTISURFACE|MYISAM|NAME|NAMES|NAN|NATIONAL|NCHAR|NDISTINCT|NEW|NEXT|NFC|NFD|NFKC|NFKD|NO|NOAUDIT|NOBYPASSRLS|NOCACHE|NOCHECK|NOCOMPRESS|NOCREATEDB|NOCREATEROLE|NOCREATEUSER|NOCYCLE|NOINHERIT|NOLOGIN|NONCLUSTERED|NONE|NOORDER|NOREPLICATION|NORMALIZE|NORMALIZED|NOSUPERUSER|NOTHING|NOTIFY|NOTNULL|NOWAIT|NO_WRITE_TO_BINLOG|NULLIF|NULLS|NUMERIC|NUMRANGE|OBJECT|OBJECTS|OF|OFF|OFFLINE|OFFSET|OFFSETS|OIDS|OLD|ONLINE|ONLY|ON_ERROR|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPERATE|OPERATION|OPERATOR|OPTIMIZE|OPTION|OPTIONALLY|OPTIONS|OR|ORDINALITY|OTHERS|OUT|OUTFILE|OVER|OVERLAPS|OVERLAY|OVERRIDING|OVERWRITE|OWNED|OWNER|OWNERSHIP|PACK_KEYS|PARALLEL|PARAMETERS|PARSER|PARTIAL|PARTITION|PASSING|PASSWORD|PATH|PCTFREE|PERMISSIVE|PG_LSN|PIPE|PLACING|PLAIN|PLANS|POINT|POINTM|POINTZ|POINTZM|POLICY|POLYGON|POLYGONM|POLYGONZ|POLYGONZM|POLYHEDRALSURFACE|POSITION|POSTFIX|PRECEDING|PRECISION|PREFIX|PREORDER|PREPARE|PREPARED|PRESERVE|PRIMARY|PRINT|PRIOR|PRIVILEGES|PROC|PROCEDURAL|PROCEDURE|PROCEDURES|PROCESS|PROCESSLIST|PROCESS_TOAST|PROGRAM|PROVIDER|PUBLIC|PUBLICATION|PURGE|QUALIFY|QUARTER|QUOTE|RAID0|RAISERROR|RANGE|RAW|READ|READTEXT|REAL|REASSIGN|RECHECK|RECONFIGURE|RECURSIVE|REF|REFERENCES|REFERENCE_USAGE|REFERENCING|REFRESH|REGEXP|REINDEX|REJECT_LIMIT|RELATIVE|RELEASE|RELOAD|REMAINDER|RENAME|REPEAT|REPEATABLE|REPLACE|REPLICA|REPLICATION|REQUIRE|RESET|RESIGNAL|RESOURCE|RESPECT|RESTART|RESTRICT|RESTRICTED|RESTRICTIVE|RETRIEVE|RETURN|RETURNS|REVOKE|RLIKE|ROLE|ROLES|ROLLBACK|ROLLUP|ROUTINE|ROUTINES|ROW|ROWCOUNT|ROWGUIDCOL|ROWID|ROWNUM|ROWS|RULE|SAFE|SAVE|SAVEPOINT|SCALAR|SCHEMA|SCHEMAS|SCROLL|SEARCH|SECOND|SECOND_MICROSECOND|SECURITY|SEPARATOR|SEQUENCE|SEQUENCES|SERIAL|SERIAL2|SERIAL4|SERIAL8|SERIALIZABLE|SERVER|SERVER_ENCODING|SERVER_VERSION|SESSION|SESSION_USER|SET|SETOF|SETS|SETTINGS|SETUSER|SHARE|SHARES|SHOW|SHUTDOWN|SIGNAL|SILENT|SIMILAR|SIMPLE|SKIP|SKIP_LOCKED|SMALLINT|SMALLSERIAL|SNAPSHOT|SOME|SONAME|SOURCE|SPATIAL|SQL|SQLCA|SQL_BIG_RESULT|SQL_BIG_SELECTS|SQL_BIG_TABLES|SQL_CALC_FOUND_ROWS|SQL_LOG_OFF|SQL_LOG_UPDATE|SQL_LOW_PRIORITY_UPDATES|SQL_SELECT_LIMIT|SQL_SMALL_RESULT|SQL_WARNINGS|SSL|STABLE|STAGE|STAGES|STANDALONE|START|STARTING|STARTS|STATEMENT|STATISTICS|STDIN|STDOUT|STOP|STORAGE|STORED|STRAIGHT_JOIN|STREAM|STREAMS|STRICT|STRIP|SUBLIST|SUBSCRIPTION|SUBSTRING|SUCCESSFUL|SUMMARY|SUPERUSER|SUPPORT|SYMMETRIC|SYNONYM|SYSDATE|SYSID|SYSTEM|TABLE|TABLES|TABLESAMPLE|TABLESPACE|TARGET|TASK|TASKS|TEMP|TEMPLATE|TEMPORARY|TERMINATE|TERMINATED|TEXT|TEXTSIZE|THAN|THEN|TIES|TIME|TIMESTAMP|TIMESTAMPTZ|TIMETZ|TIMING|TIN|TINYBLOB|TINYINT|TINYTEXT|TO|TOAST|TOP|TRAILING|TRAN|TRANSACTION|TRANSACTIONS|TRANSFORM|TRANSIENT|TREAT|TRIANGLE|TRIGGER|TRIM|TRUE|TRUNCATE|TRUSTED|TSEQUAL|TSQUERY|TSRANGE|TSTZRANGE|TSVECTOR|TYPE|TYPES|UESCAPE|UID|UNBOUNDED|UNCOMMITTED|UNDO|UNENCRYPTED|UNIQUE|UNKNOWN|UNLISTEN|UNLOCK|UNLOGGED|UNSAFE|UNSIGNED|UNTIL|UPDATE|UPDATETEXT|USAGE|USE|USER|USERS|USE_ANY_ROLE|UTC_DATE|UTC_TIME|UTC_TIMESTAMP|UUID|VACUUM|VALID|VALIDATE|VALIDATOR|VALUE|VALUES|VARCHAR|VARCHAR2|VARCHARACTER|VARIABLE|VARIABLES|VARYING|VECTOR|VERBOSE|VERSION|VIEW|VIEWS|VIRTUAL|VOLATILE|WAITFOR|WAL|WAREHOUSE|WAREHOUSES|WEEK|WEEKDAY|WHEN|WHERE|WHILE|WHITESPACE|WINDOW|WITH|WITHIN|WITHOUT|WORK|WRAPPER|WRITE|WRITETEXT|X509|XML|XMLATTRIBUTES|XMLCONCAT|XMLELEMENT|XMLEXISTS|XMLFOREST|XMLNAMESPACES|XMLPARSE|XMLPI|XMLROOT|XMLSERIALIZE|XMLTABLE|XOR|YAML|YEAR|YEAR_MONTH|YES|ZEROFILL|ZONE)$",
22
+ "any": [
23
+ {
24
+ "inside": {
25
+ "field": "alias",
26
+ "any": [
27
+ {
28
+ "kind": "term"
29
+ },
30
+ {
31
+ "kind": "relation"
32
+ },
33
+ {
34
+ "kind": "from"
35
+ },
36
+ {
37
+ "kind": "statement"
38
+ },
39
+ {
40
+ "kind": "insert"
41
+ },
42
+ {
43
+ "kind": "cross_join"
44
+ },
45
+ {
46
+ "kind": "lateral_cross_join"
47
+ },
48
+ {
49
+ "kind": "lateral_join"
50
+ }
51
+ ]
52
+ }
53
+ },
54
+ {
55
+ "inside": {
56
+ "field": "name",
57
+ "kind": "column_definition",
58
+ "any": [
59
+ {
60
+ "has": {
61
+ "field": "type",
62
+ "regex": "(?s)."
63
+ }
64
+ },
65
+ {
66
+ "has": {
67
+ "field": "custom_type",
68
+ "regex": "(?s)."
69
+ }
70
+ }
71
+ ],
72
+ "inside": {
73
+ "kind": "column_definitions",
74
+ "stopBy": "neighbor",
75
+ "inside": {
76
+ "kind": "create_table",
77
+ "stopBy": "neighbor"
78
+ }
79
+ }
80
+ }
81
+ }
82
+ ],
83
+ "not": {
84
+ "any": [
85
+ {
86
+ "precedes": {
87
+ "kind": "ERROR"
88
+ }
89
+ },
90
+ {
91
+ "inside": {
92
+ "kind": "ERROR",
93
+ "stopBy": "end"
94
+ }
95
+ }
96
+ ]
97
+ }
98
+ }
99
+ }
100
+ },
101
+ "violation": {
102
+ "anchor": "witness.span",
103
+ "code": "RF04",
104
+ "message": "Keywords should not be used as identifiers.",
105
+ "suppress": {
106
+ "sqlfluff": {
107
+ "rules": [
108
+ "RF04",
109
+ "L029",
110
+ "all",
111
+ "references",
112
+ "references.keywords"
113
+ ]
114
+ }
115
+ }
116
+ }
117
+ }
118
+ ]
119
+ }
@@ -0,0 +1,123 @@
1
+ {
2
+ "format": "rerail.policy/v1",
3
+ "id": "sqlfluff-rf05-references-special-chars",
4
+ "revision": 1,
5
+ "mode": "steer",
6
+ "description": "Use only letters, digits and underscores in SQL identifiers, quoted or not; other characters make names hard to use.",
7
+ "scope": {
8
+ "include": [
9
+ "**/*.sql"
10
+ ],
11
+ "exclude": []
12
+ },
13
+ "clauses": [
14
+ {
15
+ "id": "special-character-in-identifier",
16
+ "forbid": {
17
+ "ast": {
18
+ "language": "sql",
19
+ "rule": {
20
+ "regex": "(?s)^(?:[^\\\"`\\[][^\\\"`\\[]*[^\\p{L}\\p{N}_\\\"`\\[][^\\\"`\\[]*|\\\".*[^\\p{L}\\p{N}_].*\\\"|`.*[^\\p{L}\\p{N}_].*`|\\[.*[^\\p{L}\\p{N}_].*\\])$",
21
+ "any": [
22
+ {
23
+ "kind": "identifier"
24
+ },
25
+ {
26
+ "kind": "literal",
27
+ "inside": {
28
+ "kind": "column_definition",
29
+ "field": "name"
30
+ }
31
+ }
32
+ ],
33
+ "not": {
34
+ "any": [
35
+ {
36
+ "inside": {
37
+ "stopBy": "neighbor",
38
+ "any": [
39
+ {
40
+ "kind": "create_extension"
41
+ },
42
+ {
43
+ "kind": "drop_extension"
44
+ }
45
+ ]
46
+ }
47
+ },
48
+ {
49
+ "kind": "identifier",
50
+ "inside": {
51
+ "kind": "function_argument",
52
+ "stopBy": "neighbor"
53
+ }
54
+ },
55
+ {
56
+ "all": [
57
+ {
58
+ "not": {
59
+ "inside": {
60
+ "field": "alias",
61
+ "stopBy": "neighbor",
62
+ "regex": "(?s)."
63
+ }
64
+ }
65
+ },
66
+ {
67
+ "inside": {
68
+ "stopBy": {
69
+ "all": [
70
+ {
71
+ "kind": "term"
72
+ },
73
+ {
74
+ "inside": {
75
+ "kind": "select_expression",
76
+ "stopBy": "neighbor"
77
+ }
78
+ }
79
+ ]
80
+ },
81
+ "all": [
82
+ {
83
+ "kind": "term"
84
+ },
85
+ {
86
+ "inside": {
87
+ "kind": "select_expression",
88
+ "stopBy": "neighbor"
89
+ }
90
+ }
91
+ ],
92
+ "has": {
93
+ "field": "alias",
94
+ "regex": "(?s)."
95
+ }
96
+ }
97
+ }
98
+ ]
99
+ }
100
+ ]
101
+ }
102
+ }
103
+ }
104
+ },
105
+ "violation": {
106
+ "anchor": "witness.start",
107
+ "code": "RF05",
108
+ "message": "Special characters should not be used in identifiers.",
109
+ "suppress": {
110
+ "sqlfluff": {
111
+ "rules": [
112
+ "RF05",
113
+ "L057",
114
+ "all",
115
+ "references",
116
+ "references.special_chars"
117
+ ]
118
+ }
119
+ }
120
+ }
121
+ }
122
+ ]
123
+ }
@@ -0,0 +1,63 @@
1
+ {
2
+ "format": "rerail.policy/v1",
3
+ "id": "sqlfluff-rf06-references-quoting",
4
+ "revision": 1,
5
+ "mode": "steer",
6
+ "description": "Remove double quotes from SQL identifiers that mean the same unquoted; PostgreSQL folds unquoted names to lower case anyway.",
7
+ "scope": {
8
+ "include": [
9
+ "**/*.sql"
10
+ ],
11
+ "exclude": []
12
+ },
13
+ "clauses": [
14
+ {
15
+ "id": "unnecessary-ansi-quoted-identifier",
16
+ "forbid": {
17
+ "ast": {
18
+ "language": "sql",
19
+ "rule": {
20
+ "regex": "^\"[\\p{L}_--\\p{Lu}--\\p{Lt}][\\p{L}\\p{N}_$--\\p{Lu}--\\p{Lt}]*\"$",
21
+ "any": [
22
+ {
23
+ "kind": "identifier"
24
+ },
25
+ {
26
+ "kind": "literal"
27
+ }
28
+ ],
29
+ "not": {
30
+ "any": [
31
+ {
32
+ "regex": "(?i)^\"(?:ALL|ANALYSE|ANALYZE|AND|ANY|ARRAY|AS|ASC|ASYMMETRIC|AUTHORIZATION|BINARY|BOTH|CASE|CAST|CHECK|COLLATE|COLUMN|COMMUTATOR|CONCURRENTLY|CONNECT|CONSTRAINT|CREATE|CROSS|CURRENT_CATALOG|CURRENT_DATE|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TIMESTAMP|DEFAULT|DEFERRABLE|DESC|DISTINCT|DO|ELSE|END|EXCEPT|FALSE|FETCH|FOR|FOREIGN|FREEZE|FROM|FULL|GRANT|GROUP|HASHES|HAVING|ILIKE|IN|INITIALLY|INNER|INTERSECT|INTO|IS|ISNULL|JOIN|LATERAL|LEADING|LEFT|LIKE|LIMIT|LOCALTIME|LOCALTIMESTAMP|MERGES|NATURAL|NEGATOR|NOT|NOTNULL|NULL|OFFSET|ON|ONLY|OR|ORDER|OUTER|OVERLAPS|PLACING|PRIMARY|REFERENCES|RETURNING|RIGHT|RIGHTARG|SELECT|SESSION_USER|SIMILAR|SOME|SYMMETRIC|TABLESAMPLE|THEN|TO|TRAILING|TRUE|UNION|UNIQUE|USING|VARIADIC|VERBOSE|WHEN|WHERE|WINDOW|WITH)\"$"
33
+ },
34
+ {
35
+ "inside": {
36
+ "kind": "function_body",
37
+ "stopBy": "end"
38
+ }
39
+ }
40
+ ]
41
+ }
42
+ }
43
+ }
44
+ },
45
+ "violation": {
46
+ "anchor": "witness.start",
47
+ "code": "RF06",
48
+ "message": "Unnecessary quoted identifier; use the unquoted form.",
49
+ "suppress": {
50
+ "sqlfluff": {
51
+ "rules": [
52
+ "RF06",
53
+ "L059",
54
+ "all",
55
+ "references",
56
+ "references.quoting"
57
+ ]
58
+ }
59
+ }
60
+ }
61
+ }
62
+ ]
63
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "format": "rerail.policy/v1",
3
+ "id": "sqlfluff-st01-structure-else-null",
4
+ "revision": 1,
5
+ "mode": "steer",
6
+ "description": "Remove ELSE NULL from SQL CASE expressions; CASE already returns NULL when no branch matches.",
7
+ "scope": {
8
+ "include": [
9
+ "**/*.sql"
10
+ ],
11
+ "exclude": []
12
+ },
13
+ "clauses": [
14
+ {
15
+ "id": "redundant-else-null",
16
+ "forbid": {
17
+ "ast": {
18
+ "language": "sql",
19
+ "rule": {
20
+ "kind": "case",
21
+ "has": {
22
+ "kind": "keyword_else",
23
+ "precedes": {
24
+ "kind": "literal",
25
+ "regex": "^(?i:null)$"
26
+ }
27
+ }
28
+ }
29
+ }
30
+ },
31
+ "violation": {
32
+ "anchor": "witness.start",
33
+ "code": "ST01",
34
+ "message": "Do not specify ELSE NULL in a CASE WHEN statement.",
35
+ "suppress": {
36
+ "sqlfluff": {
37
+ "rules": [
38
+ "ST01",
39
+ "L035",
40
+ "all",
41
+ "structure",
42
+ "structure.else_null"
43
+ ]
44
+ }
45
+ }
46
+ }
47
+ }
48
+ ]
49
+ }