upsert 0.1.2 → 0.2.0

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,60 @@
1
+ class Upsert
2
+ module PG_Connection
3
+ # @private
4
+ # activerecord-3.2.5/lib/active_record/connection_adapters/postgresql_adapter.rb#column_definitions
5
+ class ColumnDefinition
6
+ class << self
7
+ def auto_increment_primary_key(connection, table_name)
8
+ res = connection.exec <<-EOS
9
+ SELECT attr.attname, seq.relname
10
+ FROM pg_class seq,
11
+ pg_attribute attr,
12
+ pg_depend dep,
13
+ pg_namespace name,
14
+ pg_constraint cons
15
+ WHERE seq.oid = dep.objid
16
+ AND seq.relkind = 'S'
17
+ AND attr.attrelid = dep.refobjid
18
+ AND attr.attnum = dep.refobjsubid
19
+ AND attr.attrelid = cons.conrelid
20
+ AND attr.attnum = cons.conkey[1]
21
+ AND cons.contype = 'p'
22
+ AND dep.refobjid = '#{connection.quote_ident(table_name.to_s)}'::regclass
23
+ EOS
24
+ if hit = res.first
25
+ hit['attname']
26
+ end
27
+ end
28
+
29
+ def all(connection, table_name)
30
+ auto_increment_primary_key = auto_increment_primary_key(connection, table_name)
31
+ res = connection.exec <<-EOS
32
+ SELECT a.attname AS name, format_type(a.atttypid, a.atttypmod) AS sql_type, d.adsrc AS default
33
+ FROM pg_attribute a LEFT JOIN pg_attrdef d
34
+ ON a.attrelid = d.adrelid AND a.attnum = d.adnum
35
+ WHERE a.attrelid = '#{connection.quote_ident(table_name.to_s)}'::regclass
36
+ AND a.attnum > 0 AND NOT a.attisdropped
37
+ ORDER BY a.attnum
38
+ EOS
39
+ res.reject do |row|
40
+ row['name'] == auto_increment_primary_key
41
+ end.map do |row|
42
+ new row['name'], row['sql_type'], row['default']
43
+ end
44
+ end
45
+ end
46
+
47
+ attr_reader :name
48
+ attr_reader :input_name
49
+ attr_reader :sql_type
50
+ attr_reader :default
51
+
52
+ def initialize(name, sql_type, default)
53
+ @name = name
54
+ @input_name = "#{name}_input"
55
+ @sql_type = sql_type
56
+ @default = default
57
+ end
58
+ end
59
+ end
60
+ end
@@ -1,12 +1,12 @@
1
1
  class Upsert
2
2
  # @private
3
3
  class Row
4
- attr_reader :buffer
4
+ attr_reader :parent
5
5
  attr_reader :selector
6
6
  attr_reader :document
7
7
 
8
- def initialize(buffer, selector, document)
9
- @buffer = buffer
8
+ def initialize(parent, selector, document)
9
+ @parent = parent
10
10
  @selector = selector
11
11
  @document = document
12
12
  end
@@ -16,23 +16,23 @@ class Upsert
16
16
  end
17
17
 
18
18
  def values_sql_bytesize
19
- @values_sql_bytesize ||= pairs.inject(0) { |sum, (_, v)| sum + buffer.quoted_value_bytesize(v) }
19
+ @values_sql_bytesize ||= pairs.inject(0) { |sum, (_, v)| sum + parent.quoted_value_bytesize(v) }
20
20
  end
21
21
 
22
22
  def values_sql
23
- buffer.quote_values pairs.map { |_, v| v }
23
+ parent.quote_values pairs.map { |_, v| v }
24
24
  end
25
25
 
26
26
  def columns_sql
27
- buffer.quote_idents columns
27
+ parent.quote_idents columns
28
28
  end
29
29
 
30
30
  def where_sql
31
- buffer.quote_pairs selector
31
+ parent.quote_pairs selector
32
32
  end
33
33
 
34
34
  def set_sql
35
- buffer.quote_pairs pairs
35
+ parent.quote_pairs pairs
36
36
  end
37
37
 
38
38
  def pairs
@@ -0,0 +1,39 @@
1
+ class Upsert
2
+ # @private
3
+ module SQLite3_Database
4
+ def chunk
5
+ return if rows.empty?
6
+ row = rows.shift
7
+ %{INSERT OR IGNORE INTO "#{table_name}" (#{row.columns_sql}) VALUES (#{row.values_sql});UPDATE "#{table_name}" SET #{row.set_sql} WHERE #{row.where_sql}}
8
+ end
9
+
10
+ def execute(sql)
11
+ connection.execute_batch sql
12
+ end
13
+
14
+ def quote_string(v)
15
+ SINGLE_QUOTE + SQLite3::Database.quote(v) + SINGLE_QUOTE
16
+ end
17
+
18
+ def quote_binary(v)
19
+ X_AND_SINGLE_QUOTE + v.unpack("H*")[0] + SINGLE_QUOTE
20
+ end
21
+
22
+ def quote_time(v)
23
+ quote_string [v.strftime(ISO8601_DATETIME), sprintf(USEC_SPRINTF, v.usec)].join('.')
24
+ end
25
+
26
+ def quote_ident(k)
27
+ DOUBLE_QUOTE + SQLite3::Database.quote(k.to_s) + DOUBLE_QUOTE
28
+ end
29
+
30
+ def quote_boolean(v)
31
+ s = v ? 't' : 'f'
32
+ quote_string s
33
+ end
34
+
35
+ def quote_big_decimal(v)
36
+ v.to_f
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  class Upsert
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,12 @@
1
+ require 'remote_table'
2
+
3
+ a = RemoteTable.new(
4
+ :url => 'http://www.postgresql.org/docs/9.1/static/sql-keywords-appendix.html',
5
+ :row_css => 'table.CALSTABLE tbody tr',
6
+ :column_css => 'td',
7
+ :headers => %w{ key_word }
8
+ )
9
+
10
+ a.each do |row|
11
+ puts row['key_word']
12
+ 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,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