create_table 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +22 -0
  4. data/README.md +82 -0
  5. data/Rakefile +89 -0
  6. data/create_table.gemspec +28 -0
  7. data/features/parsing.feature +736 -0
  8. data/features/step_definitions/create_table/parsing_steps.rb +60 -0
  9. data/features/support/env.rb +28 -0
  10. data/lib/create_table.rb +2545 -0
  11. data/lib/create_table.rl +185 -0
  12. data/lib/create_table/column.rb +4920 -0
  13. data/lib/create_table/column.rl +338 -0
  14. data/lib/create_table/column_name_based_collection.rb +26 -0
  15. data/lib/create_table/common.rb +5 -0
  16. data/lib/create_table/common.rl +13 -0
  17. data/lib/create_table/index.rb +315 -0
  18. data/lib/create_table/index.rl +91 -0
  19. data/lib/create_table/mysql_reserved.txt +226 -0
  20. data/lib/create_table/parser.rb +36 -0
  21. data/lib/create_table/pg_reserved.txt +742 -0
  22. data/lib/create_table/unique.rb +7 -0
  23. data/lib/create_table/version.rb +3 -0
  24. data/spec/create_table_spec.rb +88 -0
  25. data/spec/generating/autoincrement_primary_key.yml +74 -0
  26. data/spec/generating/backticks.yml +22 -0
  27. data/spec/generating/charset.yml +21 -0
  28. data/spec/generating/comments.yml +34 -0
  29. data/spec/generating/doublequoted.yml +25 -0
  30. data/spec/generating/index.yml +37 -0
  31. data/spec/generating/named_unique.yml +37 -0
  32. data/spec/generating/reservedwords.yml +23 -0
  33. data/spec/generating/string_primary_key.yml +35 -0
  34. data/spec/generating/temporary.yml +25 -0
  35. data/spec/generating/unique.yml +35 -0
  36. data/spec/generating/unquoted.yml +25 -0
  37. data/spec/generating_spec.rb +27 -0
  38. data/spec/spec_helper.rb +66 -0
  39. metadata +263 -0
@@ -0,0 +1,91 @@
1
+ # MAKE SURE YOU'RE EDITING THE .RL FILE !!!
2
+
3
+ =begin
4
+ %%{
5
+ machine parser;
6
+
7
+ include "common.rl";
8
+
9
+ action StartName { start_name = p }
10
+ action EndName { self.name = read(data, start_name, p) }
11
+
12
+ action StartColumnName { start_column_name = p }
13
+ action EndColumnName { column_names << read(data, start_column_name, p) }
14
+
15
+ name = space* quote_ident ident >StartName %EndName quote_ident;
16
+ column_name = space* quote_ident ident >StartColumnName %EndColumnName quote_ident :> [,)];
17
+
18
+ main := name? lparens column_name+ rparens;
19
+ }%%
20
+ =end
21
+
22
+ class CreateTable
23
+ class Index
24
+ include Parser
25
+
26
+ attr_reader :parent
27
+ attr_reader :column_names
28
+ attr_accessor :name
29
+
30
+ def initialize(parent)
31
+ @parent = parent
32
+ @column_names = []
33
+ parent.indexes << self
34
+ end
35
+
36
+ def unique
37
+ false
38
+ end
39
+
40
+ def parse(str)
41
+ data = Parser.remove_comments(str).unpack('c*')
42
+ %% write data;
43
+ # % (this fixes syntax highlighting)
44
+ parens = 0
45
+ p = item = 0
46
+ pe = eof = data.length
47
+ %% write init;
48
+ # % (this fixes syntax highlighting)
49
+ %% write exec;
50
+ # % (this fixes syntax highlighting)
51
+ self
52
+ end
53
+
54
+ def column_names=(column_names)
55
+ @column_names = [column_names].compact.flatten
56
+ end
57
+
58
+ def to_sql(format, options)
59
+ return if primary_key
60
+ return if unique and name.nil?
61
+ parts = []
62
+ parts << 'CREATE'
63
+ parts << 'UNIQUE' if (unique and name)
64
+ parts << 'INDEX'
65
+ parts += [ quoted_name(options), 'ON', parent.quoted_table_name(options), '(', quoted_column_names(options), ')' ]
66
+ parts.join ' '
67
+ end
68
+
69
+ def primary_key
70
+ if pk = parent.primary_key
71
+ pk.column_names == column_names
72
+ end
73
+ end
74
+
75
+ def quoted_name(options)
76
+ if name
77
+ CreateTable.quote_ident name, options
78
+ elsif unique
79
+ "uidx_#{parent.table_name}_on_#{name}"
80
+ else
81
+ "idx_#{parent.table_name}_on_#{name}"
82
+ end
83
+ end
84
+
85
+ def quoted_column_names(options)
86
+ column_names.map do |column_name|
87
+ CreateTable.quote_ident column_name, options
88
+ end.join(', ')
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,226 @@
1
+ ACCESSIBLE
2
+ ADD
3
+ ALL
4
+ ALTER
5
+ ANALYZE
6
+ AND
7
+ AS
8
+ ASC
9
+ ASENSITIVE
10
+ BEFORE
11
+ BETWEEN
12
+ BIGINT
13
+ BINARY
14
+ BLOB
15
+ BOTH
16
+ BY
17
+ CALL
18
+ CASCADE
19
+ CASE
20
+ CHANGE
21
+ CHAR
22
+ CHARACTER
23
+ CHECK
24
+ COLLATE
25
+ COLUMN
26
+ CONDITION
27
+ CONSTRAINT
28
+ CONTINUE
29
+ CONVERT
30
+ CREATE
31
+ CROSS
32
+ CURRENT_DATE
33
+ CURRENT_TIME
34
+ CURRENT_TIMESTAMP
35
+ CURRENT_USER
36
+ CURSOR
37
+ DATABASE
38
+ DATABASES
39
+ DAY_HOUR
40
+ DAY_MICROSECOND
41
+ DAY_MINUTE
42
+ DAY_SECOND
43
+ DEC
44
+ DECIMAL
45
+ DECLARE
46
+ DEFAULT
47
+ DELAYED
48
+ DELETE
49
+ DESC
50
+ DESCRIBE
51
+ DETERMINISTIC
52
+ DISTINCT
53
+ DISTINCTROW
54
+ DIV
55
+ DOUBLE
56
+ DROP
57
+ DUAL
58
+ EACH
59
+ ELSE
60
+ ELSEIF
61
+ ENCLOSED
62
+ ESCAPED
63
+ EXISTS
64
+ EXIT
65
+ EXPLAIN
66
+ FALSE
67
+ FETCH
68
+ FLOAT
69
+ FLOAT4
70
+ FLOAT8
71
+ FOR
72
+ FORCE
73
+ FOREIGN
74
+ FROM
75
+ FULLTEXT
76
+ GRANT
77
+ GROUP
78
+ HAVING
79
+ HIGH_PRIORITY
80
+ HOUR_MICROSECOND
81
+ HOUR_MINUTE
82
+ HOUR_SECOND
83
+ IF
84
+ IGNORE
85
+ IN
86
+ INDEX
87
+ INFILE
88
+ INNER
89
+ INOUT
90
+ INSENSITIVE
91
+ INSERT
92
+ INT
93
+ INT1
94
+ INT2
95
+ INT3
96
+ INT4
97
+ INT8
98
+ INTEGER
99
+ INTERVAL
100
+ INTO
101
+ IS
102
+ ITERATE
103
+ JOIN
104
+ KEY
105
+ KEYS
106
+ KILL
107
+ LEADING
108
+ LEAVE
109
+ LEFT
110
+ LIKE
111
+ LIMIT
112
+ LINEAR
113
+ LINES
114
+ LOAD
115
+ LOCALTIME
116
+ LOCALTIMESTAMP
117
+ LOCK
118
+ LONG
119
+ LONGBLOB
120
+ LONGTEXT
121
+ LOOP
122
+ LOW_PRIORITY
123
+ MASTER_SSL_VERIFY_SERVER_CERT
124
+ MATCH
125
+ MAXVALUE
126
+ MEDIUMBLOB
127
+ MEDIUMINT
128
+ MEDIUMTEXT
129
+ MIDDLEINT
130
+ MINUTE_MICROSECOND
131
+ MINUTE_SECOND
132
+ MOD
133
+ MODIFIES
134
+ NATURAL
135
+ NOT
136
+ NO_WRITE_TO_BINLOG
137
+ NULL
138
+ NUMERIC
139
+ ON
140
+ OPTIMIZE
141
+ OPTION
142
+ OPTIONALLY
143
+ OR
144
+ ORDER
145
+ OUT
146
+ OUTER
147
+ OUTFILE
148
+ PRECISION
149
+ PRIMARY
150
+ PROCEDURE
151
+ PURGE
152
+ RANGE
153
+ READ
154
+ READS
155
+ READ_WRITE
156
+ REAL
157
+ REFERENCES
158
+ REGEXP
159
+ RELEASE
160
+ RENAME
161
+ REPEAT
162
+ REPLACE
163
+ REQUIRE
164
+ RESIGNAL
165
+ RESTRICT
166
+ RETURN
167
+ REVOKE
168
+ RIGHT
169
+ RLIKE
170
+ SCHEMA
171
+ SCHEMAS
172
+ SECOND_MICROSECOND
173
+ SELECT
174
+ SENSITIVE
175
+ SEPARATOR
176
+ SET
177
+ SHOW
178
+ SIGNAL
179
+ SMALLINT
180
+ SPATIAL
181
+ SPECIFIC
182
+ SQL
183
+ SQLEXCEPTION
184
+ SQLSTATE
185
+ SQLWARNING
186
+ SQL_BIG_RESULT
187
+ SQL_CALC_FOUND_ROWS
188
+ SQL_SMALL_RESULT
189
+ SSL
190
+ STARTING
191
+ STRAIGHT_JOIN
192
+ TABLE
193
+ TERMINATED
194
+ THEN
195
+ TINYBLOB
196
+ TINYINT
197
+ TINYTEXT
198
+ TO
199
+ TRAILING
200
+ TRIGGER
201
+ TRUE
202
+ UNDO
203
+ UNION
204
+ UNIQUE
205
+ UNLOCK
206
+ UNSIGNED
207
+ UPDATE
208
+ USAGE
209
+ USE
210
+ USING
211
+ UTC_DATE
212
+ UTC_TIME
213
+ UTC_TIMESTAMP
214
+ VALUES
215
+ VARBINARY
216
+ VARCHAR
217
+ VARCHARACTER
218
+ VARYING
219
+ WHEN
220
+ WHERE
221
+ WHILE
222
+ WITH
223
+ WRITE
224
+ XOR
225
+ YEAR_MONTH
226
+ ZEROFILL
@@ -0,0 +1,36 @@
1
+ class CreateTable
2
+ module Parser
3
+ def Parser.remove_comments(str)
4
+ str.gsub SQL_COMMENT, ''
5
+ end
6
+
7
+ # http://ostermiller.org/findcomment.html
8
+ SQL_COMMENT = %r{/\*(?:.|[\r\n])*?\*/}m
9
+
10
+ def read(data, s, p)
11
+ data[s...p].pack('c*')
12
+ end
13
+
14
+ def read_quoted(data, s, p)
15
+ memo = read data, s, p
16
+ memo.gsub! %{\\\'}, %{'}
17
+ memo.gsub! %{\\\"}, %{"}
18
+ memo.gsub! /(['"])\1/, '\1'
19
+ memo
20
+ end
21
+
22
+ # you still have to put this in the body of your file
23
+ # def parse(str)
24
+ # data = Parser.remove_comments(str).unpack('c*')
25
+ # %% write data;
26
+ # # % (this fixes syntax highlighting)
27
+ # parens = 0
28
+ # p = item = 0
29
+ # pe = eof = data.length
30
+ # %% write init;
31
+ # # % (this fixes syntax highlighting)
32
+ # %% write exec;
33
+ # # % (this fixes syntax highlighting)
34
+ # end
35
+ end
36
+ end
@@ -0,0 +1,742 @@
1
+ A
2
+ ABORT
3
+ ABS
4
+ ABSENT
5
+ ABSOLUTE
6
+ ACCESS
7
+ ACCORDING
8
+ ACTION
9
+ ADA
10
+ ADD
11
+ ADMIN
12
+ AFTER
13
+ AGGREGATE
14
+ ALIAS
15
+ ALL
16
+ ALLOCATE
17
+ ALSO
18
+ ALTER
19
+ ALWAYS
20
+ ANALYSE
21
+ ANALYZE
22
+ AND
23
+ ANY
24
+ ARE
25
+ ARRAY
26
+ ARRAY_AGG
27
+ AS
28
+ ASC
29
+ ASENSITIVE
30
+ ASSERTION
31
+ ASSIGNMENT
32
+ ASYMMETRIC
33
+ AT
34
+ ATOMIC
35
+ ATTRIBUTE
36
+ ATTRIBUTES
37
+ AUTHORIZATION
38
+ AVG
39
+ BACKWARD
40
+ BASE64
41
+ BEFORE
42
+ BEGIN
43
+ BERNOULLI
44
+ BETWEEN
45
+ BIGINT
46
+ BINARY
47
+ BIT
48
+ BITVAR
49
+ BIT_LENGTH
50
+ BLOB
51
+ BLOCKED
52
+ BOM
53
+ BOOLEAN
54
+ BOTH
55
+ BREADTH
56
+ BY
57
+ C
58
+ CACHE
59
+ CALL
60
+ CALLED
61
+ CARDINALITY
62
+ CASCADE
63
+ CASCADED
64
+ CASE
65
+ CAST
66
+ CATALOG
67
+ CATALOG_NAME
68
+ CEIL
69
+ CEILING
70
+ CHAIN
71
+ CHAR
72
+ CHARACTER
73
+ CHARACTERISTICS
74
+ CHARACTERS
75
+ CHARACTER_LENGTH
76
+ CHARACTER_SET_CATALOG
77
+ CHARACTER_SET_NAME
78
+ CHARACTER_SET_SCHEMA
79
+ CHAR_LENGTH
80
+ CHECK
81
+ CHECKED
82
+ CHECKPOINT
83
+ CLASS
84
+ CLASS_ORIGIN
85
+ CLOB
86
+ CLOSE
87
+ CLUSTER
88
+ COALESCE
89
+ COBOL
90
+ COLLATE
91
+ COLLATION
92
+ COLLATION_CATALOG
93
+ COLLATION_NAME
94
+ COLLATION_SCHEMA
95
+ COLLECT
96
+ COLUMN
97
+ COLUMNS
98
+ COLUMN_NAME
99
+ COMMAND_FUNCTION
100
+ COMMAND_FUNCTION_CODE
101
+ COMMENT
102
+ COMMENTS
103
+ COMMIT
104
+ COMMITTED
105
+ COMPLETION
106
+ CONCURRENTLY
107
+ CONDITION
108
+ CONDITION_NUMBER
109
+ CONFIGURATION
110
+ CONNECT
111
+ CONNECTION
112
+ CONNECTION_NAME
113
+ CONSTRAINT
114
+ CONSTRAINTS
115
+ CONSTRAINT_CATALOG
116
+ CONSTRAINT_NAME
117
+ CONSTRAINT_SCHEMA
118
+ CONSTRUCTOR
119
+ CONTAINS
120
+ CONTENT
121
+ CONTINUE
122
+ CONTROL
123
+ CONVERSION
124
+ CONVERT
125
+ COPY
126
+ CORR
127
+ CORRESPONDING
128
+ COST
129
+ COUNT
130
+ COVAR_POP
131
+ COVAR_SAMP
132
+ CREATE
133
+ CROSS
134
+ CSV
135
+ CUBE
136
+ CUME_DIST
137
+ CURRENT
138
+ CURRENT_CATALOG
139
+ CURRENT_DATE
140
+ CURRENT_DEFAULT_TRANSFORM_GROUP
141
+ CURRENT_PATH
142
+ CURRENT_ROLE
143
+ CURRENT_SCHEMA
144
+ CURRENT_TIME
145
+ CURRENT_TIMESTAMP
146
+ CURRENT_TRANSFORM_GROUP_FOR_TYPE
147
+ CURRENT_USER
148
+ CURSOR
149
+ CURSOR_NAME
150
+ CYCLE
151
+ DATA
152
+ DATABASE
153
+ DATALINK
154
+ DATE
155
+ DATETIME_INTERVAL_CODE
156
+ DATETIME_INTERVAL_PRECISION
157
+ DAY
158
+ DB
159
+ DEALLOCATE
160
+ DEC
161
+ DECIMAL
162
+ DECLARE
163
+ DEFAULT
164
+ DEFAULTS
165
+ DEFERRABLE
166
+ DEFERRED
167
+ DEFINED
168
+ DEFINER
169
+ DEGREE
170
+ DELETE
171
+ DELIMITER
172
+ DELIMITERS
173
+ DENSE_RANK
174
+ DEPTH
175
+ DEREF
176
+ DERIVED
177
+ DESC
178
+ DESCRIBE
179
+ DESCRIPTOR
180
+ DESTROY
181
+ DESTRUCTOR
182
+ DETERMINISTIC
183
+ DIAGNOSTICS
184
+ DICTIONARY
185
+ DISABLE
186
+ DISCARD
187
+ DISCONNECT
188
+ DISPATCH
189
+ DISTINCT
190
+ DLNEWCOPY
191
+ DLPREVIOUSCOPY
192
+ DLURLCOMPLETE
193
+ DLURLCOMPLETEONLY
194
+ DLURLCOMPLETEWRITE
195
+ DLURLPATH
196
+ DLURLPATHONLY
197
+ DLURLPATHWRITE
198
+ DLURLSCHEME
199
+ DLURLSERVER
200
+ DLVALUE
201
+ DO
202
+ DOCUMENT
203
+ DOMAIN
204
+ DOUBLE
205
+ DROP
206
+ DYNAMIC
207
+ DYNAMIC_FUNCTION
208
+ DYNAMIC_FUNCTION_CODE
209
+ EACH
210
+ ELEMENT
211
+ ELSE
212
+ EMPTY
213
+ ENABLE
214
+ ENCODING
215
+ ENCRYPTED
216
+ END
217
+ END-EXEC
218
+ ENUM
219
+ EQUALS
220
+ ESCAPE
221
+ EVERY
222
+ EXCEPT
223
+ EXCEPTION
224
+ EXCLUDE
225
+ EXCLUDING
226
+ EXCLUSIVE
227
+ EXEC
228
+ EXECUTE
229
+ EXISTING
230
+ EXISTS
231
+ EXP
232
+ EXPLAIN
233
+ EXTENSION
234
+ EXTERNAL
235
+ EXTRACT
236
+ FALSE
237
+ FAMILY
238
+ FETCH
239
+ FILE
240
+ FILTER
241
+ FINAL
242
+ FIRST
243
+ FIRST_VALUE
244
+ FLAG
245
+ FLOAT
246
+ FLOOR
247
+ FOLLOWING
248
+ FOR
249
+ FORCE
250
+ FOREIGN
251
+ FORTRAN
252
+ FORWARD
253
+ FOUND
254
+ FREE
255
+ FREEZE
256
+ FROM
257
+ FS
258
+ FULL
259
+ FUNCTION
260
+ FUNCTIONS
261
+ FUSION
262
+ G
263
+ GENERAL
264
+ GENERATED
265
+ GET
266
+ GLOBAL
267
+ GO
268
+ GOTO
269
+ GRANT
270
+ GRANTED
271
+ GREATEST
272
+ GROUP
273
+ GROUPING
274
+ HANDLER
275
+ HAVING
276
+ HEADER
277
+ HEX
278
+ HIERARCHY
279
+ HOLD
280
+ HOST
281
+ HOUR
282
+ ID
283
+ IDENTITY
284
+ IF
285
+ IGNORE
286
+ ILIKE
287
+ IMMEDIATE
288
+ IMMUTABLE
289
+ IMPLEMENTATION
290
+ IMPLICIT
291
+ IMPORT
292
+ IN
293
+ INCLUDING
294
+ INCREMENT
295
+ INDENT
296
+ INDEX
297
+ INDEXES
298
+ INDICATOR
299
+ INFIX
300
+ INHERIT
301
+ INHERITS
302
+ INITIALIZE
303
+ INITIALLY
304
+ INLINE
305
+ INNER
306
+ INOUT
307
+ INPUT
308
+ INSENSITIVE
309
+ INSERT
310
+ INSTANCE
311
+ INSTANTIABLE
312
+ INSTEAD
313
+ INT
314
+ INTEGER
315
+ INTEGRITY
316
+ INTERSECT
317
+ INTERSECTION
318
+ INTERVAL
319
+ INTO
320
+ INVOKER
321
+ IS
322
+ ISNULL
323
+ ISOLATION
324
+ ITERATE
325
+ JOIN
326
+ K
327
+ KEY
328
+ KEY_MEMBER
329
+ KEY_TYPE
330
+ LABEL
331
+ LAG
332
+ LANGUAGE
333
+ LARGE
334
+ LAST
335
+ LAST_VALUE
336
+ LATERAL
337
+ LC_COLLATE
338
+ LC_CTYPE
339
+ LEAD
340
+ LEADING
341
+ LEAST
342
+ LEFT
343
+ LENGTH
344
+ LESS
345
+ LEVEL
346
+ LIBRARY
347
+ LIKE
348
+ LIKE_REGEX
349
+ LIMIT
350
+ LINK
351
+ LISTEN
352
+ LN
353
+ LOAD
354
+ LOCAL
355
+ LOCALTIME
356
+ LOCALTIMESTAMP
357
+ LOCATION
358
+ LOCATOR
359
+ LOCK
360
+ LOWER
361
+ M
362
+ MAP
363
+ MAPPING
364
+ MATCH
365
+ MATCHED
366
+ MAX
367
+ MAXVALUE
368
+ MAX_CARDINALITY
369
+ MEMBER
370
+ MERGE
371
+ MESSAGE_LENGTH
372
+ MESSAGE_OCTET_LENGTH
373
+ MESSAGE_TEXT
374
+ METHOD
375
+ MIN
376
+ MINUTE
377
+ MINVALUE
378
+ MOD
379
+ MODE
380
+ MODIFIES
381
+ MODIFY
382
+ MODULE
383
+ MONTH
384
+ MORE
385
+ MOVE
386
+ MULTISET
387
+ MUMPS
388
+ NAME
389
+ NAMES
390
+ NAMESPACE
391
+ NATIONAL
392
+ NATURAL
393
+ NCHAR
394
+ NCLOB
395
+ NESTING
396
+ NEW
397
+ NEXT
398
+ NFC
399
+ NFD
400
+ NFKC
401
+ NFKD
402
+ NIL
403
+ NO
404
+ NONE
405
+ NORMALIZE
406
+ NORMALIZED
407
+ NOT
408
+ NOTHING
409
+ NOTIFY
410
+ NOTNULL
411
+ NOWAIT
412
+ NTH_VALUE
413
+ NTILE
414
+ NULL
415
+ NULLABLE
416
+ NULLIF
417
+ NULLS
418
+ NUMBER
419
+ NUMERIC
420
+ OBJECT
421
+ OCCURRENCES_REGEX
422
+ OCTETS
423
+ OCTET_LENGTH
424
+ OF
425
+ OFF
426
+ OFFSET
427
+ OIDS
428
+ OLD
429
+ ON
430
+ ONLY
431
+ OPEN
432
+ OPERATION
433
+ OPERATOR
434
+ OPTION
435
+ OPTIONS
436
+ OR
437
+ ORDER
438
+ ORDERING
439
+ ORDINALITY
440
+ OTHERS
441
+ OUT
442
+ OUTER
443
+ OUTPUT
444
+ OVER
445
+ OVERLAPS
446
+ OVERLAY
447
+ OVERRIDING
448
+ OWNED
449
+ OWNER
450
+ P
451
+ PAD
452
+ PARAMETER
453
+ PARAMETERS
454
+ PARAMETER_MODE
455
+ PARAMETER_NAME
456
+ PARAMETER_ORDINAL_POSITION
457
+ PARAMETER_SPECIFIC_CATALOG
458
+ PARAMETER_SPECIFIC_NAME
459
+ PARAMETER_SPECIFIC_SCHEMA
460
+ PARSER
461
+ PARTIAL
462
+ PARTITION
463
+ PASCAL
464
+ PASSING
465
+ PASSTHROUGH
466
+ PASSWORD
467
+ PATH
468
+ PERCENTILE_CONT
469
+ PERCENTILE_DISC
470
+ PERCENT_RANK
471
+ PERMISSION
472
+ PLACING
473
+ PLANS
474
+ PLI
475
+ POSITION
476
+ POSITION_REGEX
477
+ POSTFIX
478
+ POWER
479
+ PRECEDING
480
+ PRECISION
481
+ PREFIX
482
+ PREORDER
483
+ PREPARE
484
+ PREPARED
485
+ PRESERVE
486
+ PRIMARY
487
+ PRIOR
488
+ PRIVILEGES
489
+ PROCEDURAL
490
+ PROCEDURE
491
+ PUBLIC
492
+ QUOTE
493
+ RANGE
494
+ RANK
495
+ READ
496
+ READS
497
+ REAL
498
+ REASSIGN
499
+ RECHECK
500
+ RECOVERY
501
+ RECURSIVE
502
+ REF
503
+ REFERENCES
504
+ REFERENCING
505
+ REGR_AVGX
506
+ REGR_AVGY
507
+ REGR_COUNT
508
+ REGR_INTERCEPT
509
+ REGR_R2
510
+ REGR_SLOPE
511
+ REGR_SXX
512
+ REGR_SXY
513
+ REGR_SYY
514
+ REINDEX
515
+ RELATIVE
516
+ RELEASE
517
+ RENAME
518
+ REPEATABLE
519
+ REPLACE
520
+ REPLICA
521
+ REQUIRING
522
+ RESET
523
+ RESPECT
524
+ RESTART
525
+ RESTORE
526
+ RESTRICT
527
+ RESULT
528
+ RETURN
529
+ RETURNED_CARDINALITY
530
+ RETURNED_LENGTH
531
+ RETURNED_OCTET_LENGTH
532
+ RETURNED_SQLSTATE
533
+ RETURNING
534
+ RETURNS
535
+ REVOKE
536
+ RIGHT
537
+ ROLE
538
+ ROLLBACK
539
+ ROLLUP
540
+ ROUTINE
541
+ ROUTINE_CATALOG
542
+ ROUTINE_NAME
543
+ ROUTINE_SCHEMA
544
+ ROW
545
+ ROWS
546
+ ROW_COUNT
547
+ ROW_NUMBER
548
+ RULE
549
+ SAVEPOINT
550
+ SCALE
551
+ SCHEMA
552
+ SCHEMA_NAME
553
+ SCOPE
554
+ SCOPE_CATALOG
555
+ SCOPE_NAME
556
+ SCOPE_SCHEMA
557
+ SCROLL
558
+ SEARCH
559
+ SECOND
560
+ SECTION
561
+ SECURITY
562
+ SELECT
563
+ SELECTIVE
564
+ SELF
565
+ SENSITIVE
566
+ SEQUENCE
567
+ SEQUENCES
568
+ SERIALIZABLE
569
+ SERVER
570
+ SERVER_NAME
571
+ SESSION
572
+ SESSION_USER
573
+ SET
574
+ SETOF
575
+ SETS
576
+ SHARE
577
+ SHOW
578
+ SIMILAR
579
+ SIMPLE
580
+ SIZE
581
+ SMALLINT
582
+ SOME
583
+ SOURCE
584
+ SPACE
585
+ SPECIFIC
586
+ SPECIFICTYPE
587
+ SPECIFIC_NAME
588
+ SQL
589
+ SQLCODE
590
+ SQLERROR
591
+ SQLEXCEPTION
592
+ SQLSTATE
593
+ SQLWARNING
594
+ SQRT
595
+ STABLE
596
+ STANDALONE
597
+ START
598
+ STATE
599
+ STATEMENT
600
+ STATIC
601
+ STATISTICS
602
+ STDDEV_POP
603
+ STDDEV_SAMP
604
+ STDIN
605
+ STDOUT
606
+ STORAGE
607
+ STRICT
608
+ STRIP
609
+ STRUCTURE
610
+ STYLE
611
+ SUBCLASS_ORIGIN
612
+ SUBLIST
613
+ SUBMULTISET
614
+ SUBSTRING
615
+ SUBSTRING_REGEX
616
+ SUM
617
+ SYMMETRIC
618
+ SYSID
619
+ SYSTEM
620
+ SYSTEM_USER
621
+ T
622
+ TABLE
623
+ TABLES
624
+ TABLESAMPLE
625
+ TABLESPACE
626
+ TABLE_NAME
627
+ TEMP
628
+ TEMPLATE
629
+ TEMPORARY
630
+ TERMINATE
631
+ TEXT
632
+ THAN
633
+ THEN
634
+ TIES
635
+ TIME
636
+ TIMESTAMP
637
+ TIMEZONE_HOUR
638
+ TIMEZONE_MINUTE
639
+ TO
640
+ TOKEN
641
+ TOP_LEVEL_COUNT
642
+ TRAILING
643
+ TRANSACTION
644
+ TRANSACTIONS_COMMITTED
645
+ TRANSACTIONS_ROLLED_BACK
646
+ TRANSACTION_ACTIVE
647
+ TRANSFORM
648
+ TRANSFORMS
649
+ TRANSLATE
650
+ TRANSLATE_REGEX
651
+ TRANSLATION
652
+ TREAT
653
+ TRIGGER
654
+ TRIGGER_CATALOG
655
+ TRIGGER_NAME
656
+ TRIGGER_SCHEMA
657
+ TRIM
658
+ TRIM_ARRAY
659
+ TRUE
660
+ TRUNCATE
661
+ TRUSTED
662
+ TYPE
663
+ UESCAPE
664
+ UNBOUNDED
665
+ UNCOMMITTED
666
+ UNDER
667
+ UNENCRYPTED
668
+ UNION
669
+ UNIQUE
670
+ UNKNOWN
671
+ UNLINK
672
+ UNLISTEN
673
+ UNLOGGED
674
+ UNNAMED
675
+ UNNEST
676
+ UNTIL
677
+ UNTYPED
678
+ UPDATE
679
+ UPPER
680
+ URI
681
+ USAGE
682
+ USER
683
+ USER_DEFINED_TYPE_CATALOG
684
+ USER_DEFINED_TYPE_CODE
685
+ USER_DEFINED_TYPE_NAME
686
+ USER_DEFINED_TYPE_SCHEMA
687
+ USING
688
+ VACUUM
689
+ VALID
690
+ VALIDATE
691
+ VALIDATOR
692
+ VALUE
693
+ VALUES
694
+ VARBINARY
695
+ VARCHAR
696
+ VARIABLE
697
+ VARIADIC
698
+ VARYING
699
+ VAR_POP
700
+ VAR_SAMP
701
+ VERBOSE
702
+ VERSION
703
+ VIEW
704
+ VOLATILE
705
+ WHEN
706
+ WHENEVER
707
+ WHERE
708
+ WHITESPACE
709
+ WIDTH_BUCKET
710
+ WINDOW
711
+ WITH
712
+ WITHIN
713
+ WITHOUT
714
+ WORK
715
+ WRAPPER
716
+ WRITE
717
+ XML
718
+ XMLAGG
719
+ XMLATTRIBUTES
720
+ XMLBINARY
721
+ XMLCAST
722
+ XMLCOMMENT
723
+ XMLCONCAT
724
+ XMLDECLARATION
725
+ XMLDOCUMENT
726
+ XMLELEMENT
727
+ XMLEXISTS
728
+ XMLFOREST
729
+ XMLITERATE
730
+ XMLNAMESPACES
731
+ XMLPARSE
732
+ XMLPI
733
+ XMLQUERY
734
+ XMLROOT
735
+ XMLSCHEMA
736
+ XMLSERIALIZE
737
+ XMLTABLE
738
+ XMLTEXT
739
+ XMLVALIDATE
740
+ YEAR
741
+ YES
742
+ ZONE