use strict;
use warnings;
-my @sql_versions = reverse sort ('1992', '2011', '2016');
+my @sql_versions = reverse sort ('1992', '2016', '2023');
my $srcdir = $ARGV[0];
CATALOG
CATALOG_NAME
CHAIN
+CHAINING
CHARACTER_SET_CATALOG
CHARACTER_SET_NAME
CHARACTER_SET_SCHEMA
COLLATION_CATALOG
COLLATION_NAME
COLLATION_SCHEMA
+COLUMNS
COLUMN_NAME
COMMAND_FUNCTION
COMMAND_FUNCTION_CODE
COMMITTED
+CONDITIONAL
CONDITION_NUMBER
CONNECTION
CONNECTION_NAME
CONSTRAINTS
CONSTRUCTOR
CONTINUE
+COPARTITION
CURSOR_NAME
DATA
DATETIME_INTERVAL_CODE
DOMAIN
DYNAMIC_FUNCTION
DYNAMIC_FUNCTION_CODE
+ENCODING
ENFORCED
+ERROR
EXCLUDE
EXCLUDING
EXPRESSION
FINAL
+FINISH
FIRST
FLAG
FOLLOWING
+FORMAT
FORTRAN
FOUND
+FULFILL
G
GENERAL
GENERATED
INVOKER
ISOLATION
K
+KEEP
KEY
+KEYS
KEY_MEMBER
KEY_TYPE
LAST
MAP
MATCHED
MAXVALUE
+MEASURES
MESSAGE_LENGTH
MESSAGE_OCTET_LENGTH
MESSAGE_TEXT
MUMPS
NAME
NAMES
+NESTED
NESTING
NEXT
NFC
NFKC
NFKD
NORMALIZED
+NULL_ORDERING
NULLABLE
NULLS
NUMBER
OBJECT
+OCCURRENCE
OCTETS
OPTION
OPTIONS
ORDINALITY
OTHERS
OUTPUT
+OVERFLOW
OVERRIDING
P
PAD
PARAMETER_SPECIFIC_SCHEMA
PARTIAL
PASCAL
+PASS
+PASSING
+PAST
PATH
+PERMUTE
+PIPE
PLACING
+PLAN
PLI
PRECEDING
PRESERVE
+PREV
PRIOR
+PRIVATE
PRIVILEGES
+PRUNE
PUBLIC
+QUOTES
READ
RELATIVE
REPEATABLE
RETURNED_LENGTH
RETURNED_OCTET_LENGTH
RETURNED_SQLSTATE
+RETURNING
ROLE
ROUTINE
ROUTINE_CATALOG
ROUTINE_NAME
ROUTINE_SCHEMA
ROW_COUNT
+SCALAR
SCALE
SCHEMA
SCHEMA_NAME
SECTION
SECURITY
SELF
+SEMANTICS
SEQUENCE
SERIALIZABLE
SERVER_NAME
SETS
SIMPLE
SIZE
+SORT_DIRECTION
SOURCE
SPACE
SPECIFIC_NAME
STATE
STATEMENT
+STRING
STRUCTURE
STYLE
SUBCLASS_ORIGIN
T
TABLE_NAME
TEMPORARY
+THROUGH
TIES
TOP_LEVEL_COUNT
TRANSACTION
TYPE
UNBOUNDED
UNCOMMITTED
+UNCONDITIONAL
UNDER
+UNMATCHED
UNNAMED
USAGE
USER_DEFINED_TYPE_CATALOG
USER_DEFINED_TYPE_CODE
USER_DEFINED_TYPE_NAME
USER_DEFINED_TYPE_SCHEMA
+UTF16
+UTF32
+UTF8
VIEW
WORK
+WRAPPER
WRITE
ZONE
ABS
+ABSENT
+ACOS
ALL
ALLOCATE
ALTER
AND
ANY
+ANY_VALUE
ARE
ARRAY
ARRAY_AGG
ARRAY_MAX_CARDINALITY
AS
ASENSITIVE
+ASIN
ASYMMETRIC
AT
+ATAN
ATOMIC
AUTHORIZATION
AVG
BLOB
BOOLEAN
BOTH
+BTRIM
BY
CALL
CALLED
CHARACTER
CHARACTER_LENGTH
CHECK
+CLASSIFIER
CLOB
CLOSE
COALESCE
CONSTRAINT
CONTAINS
CONVERT
+COPY
CORR
CORRESPONDING
+COS
+COSH
COUNT
COVAR_POP
COVAR_SAMP
DAY
DEALLOCATE
DEC
+DECFLOAT
DECIMAL
DECLARE
DEFAULT
+DEFINE
DELETE
DENSE_RANK
DEREF
EACH
ELEMENT
ELSE
+EMPTY
END
END_FRAME
END_PARTITION
GET
GLOBAL
GRANT
+GREATEST
GROUP
GROUPING
GROUPS
IDENTITY
IN
INDICATOR
+INITIAL
INNER
INOUT
INSENSITIVE
INTO
IS
JOIN
+JSON
+JSON_ARRAY
+JSON_ARRAYAGG
+JSON_EXISTS
+JSON_OBJECT
+JSON_OBJECTAGG
+JSON_QUERY
+JSON_SCALAR
+JSON_SERIALIZE
+JSON_TABLE
+JSON_TABLE_PRIMITIVE
+JSON_VALUE
LAG
LANGUAGE
LARGE
LATERAL
LEAD
LEADING
+LEAST
LEFT
LIKE
LIKE_REGEX
+LISTAGG
LN
LOCAL
LOCALTIME
LOCALTIMESTAMP
+LOG
+LOG10
LOWER
+LPAD
+LTRIM
MATCH
+MATCH_NUMBER
+MATCH_RECOGNIZE
+MATCHES
MAX
MEMBER
MERGE
NULL
NULLIF
NUMERIC
-OCTET_LENGTH
OCCURRENCES_REGEX
+OCTET_LENGTH
OF
OFFSET
OLD
+OMIT
ON
+ONE
ONLY
OPEN
OR
OVERLAY
PARAMETER
PARTITION
+PATTERN
+PER
PERCENT
PERCENT_RANK
PERCENTILE_CONT
PREPARE
PRIMARY
PROCEDURE
+PTF
RANGE
RANK
READS
ROW
ROW_NUMBER
ROWS
+RPAD
+RTRIM
+RUNNING
SAVEPOINT
SCOPE
SCROLL
SEARCH
SECOND
+SEEK
SELECT
SENSITIVE
SESSION_USER
SET
+SHOW
SIMILAR
+SIN
+SINH
+SKIP
SMALLINT
SOME
SPECIFIC
STDDEV_POP
STDDEV_SAMP
SUBMULTISET
+SUBSET
SUBSTRING
SUBSTRING_REGEX
SUCCEEDS
SYSTEM_USER
TABLE
TABLESAMPLE
+TAN
+TANH
THEN
TIME
TIMESTAMP
TRANSLATION
TREAT
TRIGGER
-TRUNCATE
TRIM
TRIM_ARRAY
TRUE
+TRUNCATE
UESCAPE
UNION
UNIQUE
DLNEWCOPY
DLPREVIOUSCOPY
DLURLCOMPLETE
-DLURLCOMPLETEWRITE
DLURLCOMPLETEONLY
+DLURLCOMPLETEWRITE
DLURLPATH
-DLURLPATHWRITE
DLURLPATHONLY
+DLURLPATHWRITE
DLURLSCHEME
DLURLSERVER
DLVALUE
-ABSENT
ACCORDING
BASE64
BOM
COLUMNS
CONTENT
DOCUMENT
-EMPTY
ENCODING
HEX
ID
LOCATION
NAMESPACE
NIL
-PASSING
PATH
PRESERVE
-RETURNING
SEQUENCE
STANDALONE
STRIP
VALID
VERSION
WHITESPACE
-XMLSCHEMA
XMLDECLARATION
+XMLSCHEMA