Skip to content

Commit 26064d6

Browse files
committed
Add MSSQL reserved keyword list
For future compilation of Tokenizer lists.
1 parent 8945fcb commit 26064d6

File tree

1 file changed

+194
-0
lines changed

1 file changed

+194
-0
lines changed

tests/TokenizerTest.php

+194
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,199 @@ final class TokenizerTest extends TestCase
709709
'WITHOUT',
710710
];
711711

712+
/**
713+
* Based on https://learn.microsoft.com/en-us/sql/t-sql/language-elements/reserved-keywords-transact-sql?view=sql-server-ver16 list.
714+
*
715+
* All these keywords must be quoted.
716+
*/
717+
private const KEYWORDS_RESERVED_MSSQL = [
718+
'ADD',
719+
'ALL',
720+
'ALTER',
721+
'AND',
722+
'ANY',
723+
'AS',
724+
'ASC',
725+
'AUTHORIZATION',
726+
'BACKUP',
727+
'BEGIN',
728+
'BETWEEN',
729+
'BREAK',
730+
'BROWSE',
731+
'BULK',
732+
'BY',
733+
'CASCADE',
734+
'CASE',
735+
'CHECK',
736+
'CHECKPOINT',
737+
'CLOSE',
738+
'CLUSTERED',
739+
'COALESCE',
740+
'COLLATE',
741+
'COLUMN',
742+
'COMMIT',
743+
'COMPUTE',
744+
'CONSTRAINT',
745+
'CONTAINS',
746+
'CONTAINSTABLE',
747+
'CONTINUE',
748+
'CONVERT',
749+
'CREATE',
750+
'CROSS',
751+
'CURRENT',
752+
'CURRENT_DATE',
753+
'CURRENT_TIME',
754+
'CURRENT_TIMESTAMP',
755+
'CURRENT_USER',
756+
'CURSOR',
757+
'DATABASE',
758+
'DBCC',
759+
'DEALLOCATE',
760+
'DECLARE',
761+
'DEFAULT',
762+
'DELETE',
763+
'DENY',
764+
'DESC',
765+
'DISK',
766+
'DISTINCT',
767+
'DISTRIBUTED',
768+
'DOUBLE',
769+
'DROP',
770+
'DUMP',
771+
'ELSE',
772+
'END',
773+
'ERRLVL',
774+
'ESCAPE',
775+
'EXCEPT',
776+
'EXEC',
777+
'EXECUTE',
778+
'EXISTS',
779+
'EXIT',
780+
'EXTERNAL',
781+
'FETCH',
782+
'FILE',
783+
'FILLFACTOR',
784+
'FOR',
785+
'FOREIGN',
786+
'FREETEXT',
787+
'FREETEXTTABLE',
788+
'FROM',
789+
'FULL',
790+
'FUNCTION',
791+
'GOTO',
792+
'GRANT',
793+
'GROUP',
794+
'HAVING',
795+
'HOLDLOCK',
796+
'IDENTITY',
797+
'IDENTITYCOL',
798+
'IDENTITY_INSERT',
799+
'IF',
800+
'IN',
801+
'INDEX',
802+
'INNER',
803+
'INSERT',
804+
'INTERSECT',
805+
'INTO',
806+
'IS',
807+
'JOIN',
808+
'KEY',
809+
'KILL',
810+
'LEFT',
811+
'LIKE',
812+
'LINENO',
813+
'LOAD',
814+
'MERGE',
815+
'NATIONAL',
816+
'NOCHECK',
817+
'NONCLUSTERED',
818+
'NOT',
819+
'NULL',
820+
'NULLIF',
821+
'OF',
822+
'OFF',
823+
'OFFSETS',
824+
'ON',
825+
'OPEN',
826+
'OPENDATASOURCE',
827+
'OPENQUERY',
828+
'OPENROWSET',
829+
'OPENXML',
830+
'OPTION',
831+
'OR',
832+
'ORDER',
833+
'OUTER',
834+
'OVER',
835+
'PERCENT',
836+
'PIVOT',
837+
'PLAN',
838+
'PRECISION',
839+
'PRIMARY',
840+
'PRINT',
841+
'PROC',
842+
'PROCEDURE',
843+
'PUBLIC',
844+
'RAISERROR',
845+
'READ',
846+
'READTEXT',
847+
'RECONFIGURE',
848+
'REFERENCES',
849+
'REPLICATION',
850+
'RESTORE',
851+
'RESTRICT',
852+
'RETURN',
853+
'REVERT',
854+
'REVOKE',
855+
'RIGHT',
856+
'ROLLBACK',
857+
'ROWCOUNT',
858+
'ROWGUIDCOL',
859+
'RULE',
860+
'SAVE',
861+
'SCHEMA',
862+
'SECURITYAUDIT',
863+
'SELECT',
864+
'SEMANTICKEYPHRASETABLE',
865+
'SEMANTICSIMILARITYDETAILSTABLE',
866+
'SEMANTICSIMILARITYTABLE',
867+
'SESSION_USER',
868+
'SET',
869+
'SETUSER',
870+
'SHUTDOWN',
871+
'SOME',
872+
'STATISTICS',
873+
'SYSTEM_USER',
874+
'TABLE',
875+
'TABLESAMPLE',
876+
'TEXTSIZE',
877+
'THEN',
878+
'TO',
879+
'TOP',
880+
'TRAN',
881+
'TRANSACTION',
882+
'TRIGGER',
883+
'TRUNCATE',
884+
'TRY_CONVERT',
885+
'TSEQUAL',
886+
'UNION',
887+
'UNIQUE',
888+
'UNPIVOT',
889+
'UPDATE',
890+
'UPDATETEXT',
891+
'USE',
892+
'USER',
893+
'VALUES',
894+
'VARYING',
895+
'VIEW',
896+
'WAITFOR',
897+
'WHEN',
898+
'WHERE',
899+
'WHILE',
900+
'WITH',
901+
'WITHIN GROUP',
902+
'WRITETEXT',
903+
];
904+
712905
/**
713906
* @param 'reserved'|'reservedToplevel'|'reservedNewline'|'functions' $propertyName
714907
*
@@ -734,6 +927,7 @@ public function testInternalKeywordListsAreSortedForEasierMaintenance(): void
734927
self::KEYWORDS_RESERVED_MYSQL,
735928
self::KEYWORDS_RESERVED_MARIADB,
736929
self::KEYWORDS_RESERVED_SQLITE,
930+
self::KEYWORDS_RESERVED_MSSQL,
737931
] as $list
738932
) {
739933
$listSorted = $list;

0 commit comments

Comments
 (0)