upsert 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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