omu-support 0.1.1

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,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << 'test'
8
+ t.libs << 'lib'
9
+ t.test_files = FileList['test/**/*_test.rb']
10
+ end
11
+
12
+ require 'rubocop/rake_task'
13
+
14
+ RuboCop::RakeTask.new
15
+
16
+ task default: %i[test rubocop]
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './omu_support'
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/all'
4
+ require_relative './omu_support/core_ext'
5
+ require_relative './omu_support/rest_client'
6
+ require_relative './omu_support/sensitive'
7
+ require_relative './omu_support/version'
8
+
9
+ module OMU
10
+ module Support
11
+ class Error < StandardError; end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'core_ext/object'
4
+ require_relative 'core_ext/class'
5
+ require_relative 'core_ext/array'
6
+ require_relative 'core_ext/hash'
7
+ require_relative 'core_ext/string'
8
+ require_relative 'core_ext/integer'
9
+ require_relative 'core_ext/securerandom'
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Array
4
+ def clip(number_of_last_elements = 1)
5
+ take size - number_of_last_elements
6
+ end
7
+
8
+ def join_affixed(**options)
9
+ must_be_any_of! [String]
10
+
11
+ "#{Array(options[:prefix]).join}#{join options[:interfix]}#{Array(options[:suffix]).join}"
12
+ end
13
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Class
4
+ # Extracted from Rails code base
5
+ def convey_attributes_to_child(child, *attributes)
6
+ attributes.each { |attribute| child.__send__ "#{attribute}=", duplicated_attribute(attribute) }
7
+ end
8
+
9
+ def inherited_by_conveying_attributes(*attributes, &block)
10
+ define_singleton_method :inherited do |child|
11
+ convey_attributes_to_child(child, *attributes)
12
+ super(child)
13
+ block&.call(child)
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def duplicated_attribute(attribute)
20
+ dup = __send__(attribute).dup
21
+ case attribute
22
+ when Hash then dup.each { |k, v| dup[k] = v.dup }
23
+ when Array then dup.each_with_index { |v, i| dup[i] = v.dup }
24
+ else dup
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ostruct'
4
+
5
+ class Hash
6
+ # Stolen and refactored from https://stackoverflow.com/a/11137694
7
+ def to_deep_ostruct
8
+ internal_hashes = {}
9
+ each do |key, value|
10
+ internal_hashes[key] = value if value.is_a?(Hash)
11
+ end
12
+
13
+ return OpenStruct.new self if internal_hashes.empty?
14
+
15
+ duplicate = dup
16
+ internal_hashes.each do |key, value|
17
+ duplicate[key] = value.to_deep_ostruct
18
+ end
19
+ OpenStruct.new(duplicate)
20
+ end
21
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Integer
4
+ def to_string(length, base = 10)
5
+ to_s(base).upcase.rjust(length, '0')
6
+ end
7
+ end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Object
4
+ def to_yaml_pretty
5
+ yaml = to_yaml line_width: -1
6
+ yaml.gsub!(/\s+$/, '')
7
+ yaml.gsub!("\n-", "\n\n-")
8
+ yaml.gsub!(/^( +)-/, '\\1 -')
9
+ yaml << "\n"
10
+ end
11
+
12
+ module Type_ # rubocop:disable Naming/ClassAndModuleCamelCase
13
+ module_function
14
+
15
+ def sanitize_arguments(*args)
16
+ args.each do |arg|
17
+ raise ArgumentError, 'Type information must be a class' unless arg.is_a? Class
18
+ end
19
+ end
20
+
21
+ def type_error(object, type)
22
+ "#{type} expected where found: #{object}" unless object.is_a? type
23
+ end
24
+
25
+ def must_be_array(object, type)
26
+ (error = type_error(object, Array)) && (return error)
27
+
28
+ sanitize_arguments(sample_type = type.first)
29
+
30
+ object.each do |element|
31
+ (error = type_error(element, sample_type)) && (return error)
32
+ end
33
+
34
+ nil
35
+ end
36
+
37
+ def must_be_hash(object, type)
38
+ (error = type_error(object, Hash)) && (return error)
39
+
40
+ sanitize_arguments(*(key_type, value_type = type.first))
41
+
42
+ object.each do |key, value|
43
+ (error = type_error(key, key_type)) && (return error)
44
+ (error = type_error(value, value_type)) && (return error)
45
+ end
46
+
47
+ nil
48
+ end
49
+
50
+ def must_be_range(object, type)
51
+ (error = type_error(object, Range)) && (return error)
52
+
53
+ sanitize_arguments(starting_type = type.first)
54
+ sanitize_arguments(ending_type = type.first)
55
+
56
+ (error = type_error(object.first, starting_type)) && (return error)
57
+
58
+ type_error(object.last, ending_type)
59
+ end
60
+
61
+ def must_be_other(object, type)
62
+ type_error(object, type)
63
+ end
64
+
65
+ def must_be(object, type)
66
+ case type
67
+ when Array then must_be_array(object, type)
68
+ when Hash then must_be_hash(object, type)
69
+ when Range then must_be_range(object, type)
70
+ else must_be_other(object, type)
71
+ end
72
+ end
73
+
74
+ def must_be_any_of(object, *args)
75
+ return object unless (error = must_be(object, (types = args.dup).shift))
76
+
77
+ raise(TypeError, error) if types.empty?
78
+
79
+ return object if types.any? { |type| must_be(object, type).nil? }
80
+
81
+ raise TypeError, "One of #{args} expected where found: #{object.class}"
82
+ end
83
+ end
84
+
85
+ private_constant :Type_
86
+
87
+ def must_be_any_of!(*type_specifications)
88
+ Type_.must_be_any_of(self, *type_specifications)
89
+ end
90
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'securerandom'
4
+
5
+ module SecureRandom
6
+ module_function
7
+
8
+ def random_number_string(length, base = 10)
9
+ random_number(base**length).to_string(length, base)
10
+ end
11
+ end
@@ -0,0 +1,126 @@
1
+ # frozen_string_literal: true
2
+
3
+ class String
4
+ TURKISH_CHARS = {
5
+ 'ı' => 'i',
6
+ 'ğ' => 'g',
7
+ 'ü' => 'u',
8
+ 'ş' => 's',
9
+ 'ö' => 'o',
10
+ 'ç' => 'c',
11
+ 'İ' => 'I',
12
+ 'Ğ' => 'G',
13
+ 'Ü' => 'U',
14
+ 'Ş' => 'S',
15
+ 'Ö' => 'O',
16
+ 'Ç' => 'C'
17
+ }.freeze
18
+
19
+ # Regex stolen from https://stackoverflow.com/a/6331667
20
+ RE_PARANTHESIZED = /
21
+ (?<re>
22
+ \(
23
+ (?:
24
+ (?> [^()]+ )
25
+ |
26
+ \g<re>
27
+ )*
28
+ \)
29
+ )
30
+ /x.freeze
31
+
32
+ def asciified
33
+ chars.to_a.map { |char| (ascii = TURKISH_CHARS[char]) ? ascii : char }.join
34
+ end
35
+
36
+ def affixed(**options)
37
+ [self].join_affixed(**options)
38
+ end
39
+
40
+ def abbreviation
41
+ split.map(&:first).join.upcase(:turkic)
42
+ end
43
+
44
+ def capitalize_turkish
45
+ downcase(:turkic).split.map do |word|
46
+ if word.inside_abbreviations? :tr
47
+ word.upcase(:turkic)
48
+ elsif word.inside_conjunctions? :tr
49
+ word
50
+ else
51
+ word.capitalize(:turkic)
52
+ end
53
+ end.join(' ')
54
+ end
55
+
56
+ def capitalize_turkish_with_parenthesized
57
+ capitalize_turkish.gsub RE_PARANTHESIZED do |match|
58
+ "(#{match[1..-2].capitalize_turkish})"
59
+ end
60
+ end
61
+
62
+ module Matchable
63
+ require 'yaml'
64
+
65
+ class Matcher
66
+ attr_reader :data
67
+
68
+ def initialize
69
+ @data = {}
70
+ end
71
+
72
+ def run(languages:, category:, word:)
73
+ (languages.empty? ? %w[en tr] : languages.uniq).each do |language|
74
+ return true if match(language: language, category: category, word: word)
75
+ end
76
+
77
+ false
78
+ end
79
+
80
+ def match(language:, category:, word:)
81
+ words(language, category).include? word
82
+ end
83
+
84
+ private
85
+
86
+ # We should be lazy on all operations involving data access (hence the
87
+ # heavy use of or-equals operators).
88
+
89
+ def words(language, category)
90
+ language_data_for(language)[category.to_s] ||= Set.new []
91
+ end
92
+
93
+ def language_data_for(language)
94
+ data[language = language.to_s] ||= begin
95
+ (file = language_file_for(language)) ? YAML.load_file(file) : {}
96
+ end
97
+ end
98
+
99
+ def language_file_for(language)
100
+ @lookup ||= Hash[*
101
+ Dir[File.join File.expand_path('../data', __dir__), '*.yml'].map do |file|
102
+ name = File.basename(file, '.yml')
103
+ [name, file]
104
+ end.flatten!
105
+ ]
106
+ @lookup[language]
107
+ end
108
+ end
109
+
110
+ mattr_accessor :matcher, default: Matcher.new
111
+
112
+ # Create inside_CATEGORY? wrappers
113
+ %w[
114
+ abbreviations
115
+ conjunctions
116
+ offensives
117
+ reserved
118
+ ].each do |category|
119
+ define_method "inside_#{category}?" do |*languages|
120
+ matcher.run(languages: languages, category: category, word: self)
121
+ end
122
+ end
123
+ end
124
+
125
+ include Matchable # rubocop:disable Layout/ClassStructure
126
+ end
@@ -0,0 +1,1266 @@
1
+ ---
2
+ reserved:
3
+ # Assorted "valuable" words
4
+ - about
5
+ - access
6
+ - account
7
+ - accounts
8
+ - add
9
+ - address
10
+ - adm
11
+ - admin
12
+ - administration
13
+ - adult
14
+ - advertising
15
+ - affiliate
16
+ - affiliates
17
+ - ajax
18
+ - analytics
19
+ - android
20
+ - anon
21
+ - anonymous
22
+ - api
23
+ - app
24
+ - apps
25
+ - archive
26
+ - atom
27
+ - auth
28
+ - authentication
29
+ - avatar
30
+ - backup
31
+ - banner
32
+ - banners
33
+ - beta
34
+ - billing
35
+ - bin
36
+ - blog
37
+ - blogs
38
+ - board
39
+ - boot
40
+ - bot
41
+ - bots
42
+ - business
43
+ - cache
44
+ - cadastro
45
+ - calendar
46
+ - campaign
47
+ - careers
48
+ - cgi
49
+ - chat
50
+ - client
51
+ - cliente
52
+ - code
53
+ - com
54
+ - commercial
55
+ - compare
56
+ - compras
57
+ - config
58
+ - configuration
59
+ - connect
60
+ - contact
61
+ - contest
62
+ - create
63
+ - css
64
+ - dashboard
65
+ - data
66
+ - db
67
+ - delete
68
+ - demo
69
+ - design
70
+ - designer
71
+ - dev
72
+ - devel
73
+ - dir
74
+ - directory
75
+ - doc
76
+ - docs
77
+ - domain
78
+ - download
79
+ - downloads
80
+ - ecommerce
81
+ - edit
82
+ - editor
83
+ - email
84
+ - etc
85
+ - exe
86
+ - faq
87
+ - favorite
88
+ - feed
89
+ - feedback
90
+ - file
91
+ - files
92
+ - flog
93
+ - follow
94
+ - forum
95
+ - forums
96
+ - free
97
+ - ftp
98
+ - gadget
99
+ - gadgets
100
+ - games
101
+ - group
102
+ - groups
103
+ - guest
104
+ - help
105
+ - home
106
+ - homepage
107
+ - host
108
+ - hosting
109
+ - hostname
110
+ - hpg
111
+ - html
112
+ - http
113
+ - httpd
114
+ - https
115
+ - image
116
+ - images
117
+ - imap
118
+ - img
119
+ - index
120
+ - indice
121
+ - info
122
+ - information
123
+ - intranet
124
+ - invite
125
+ - ipad
126
+ - iphone
127
+ - irc
128
+ - java
129
+ - javascript
130
+ - job
131
+ - jobs
132
+ - js
133
+ - kernel
134
+ - knowledgebase
135
+ - lib
136
+ - list
137
+ - lists
138
+ - log
139
+ - login
140
+ - logout
141
+ - logs
142
+ - mail
143
+ - mail1
144
+ - mail2
145
+ - mail3
146
+ - mail4
147
+ - mail5
148
+ - mailer
149
+ - mailing
150
+ - manager
151
+ - marketing
152
+ - master
153
+ - me
154
+ - media
155
+ - message
156
+ - messenger
157
+ - microblog
158
+ - microblogs
159
+ - mine
160
+ - mnt
161
+ - mob
162
+ - mobile
163
+ - movie
164
+ - movies
165
+ - mp3
166
+ - msg
167
+ - msn
168
+ - music
169
+ - musicas
170
+ - mx
171
+ - my
172
+ - mysql
173
+ - name
174
+ - named
175
+ - net
176
+ - network
177
+ - new
178
+ - news
179
+ - newsletter
180
+ - nick
181
+ - nickname
182
+ - notes
183
+ - noticias
184
+ - ns
185
+ - ns1
186
+ - ns10
187
+ - ns2
188
+ - ns3
189
+ - ns4
190
+ - ns5
191
+ - ns6
192
+ - ns7
193
+ - ns8
194
+ - ns9
195
+ - old
196
+ - online
197
+ - operator
198
+ - opt
199
+ - option
200
+ - order
201
+ - orders
202
+ - page
203
+ - pager
204
+ - pages
205
+ - panel
206
+ - password
207
+ - perl
208
+ - photo
209
+ - photoalbum
210
+ - photos
211
+ - php
212
+ - pic
213
+ - pics
214
+ - plugin
215
+ - plugins
216
+ - pop
217
+ - pop3
218
+ - post
219
+ - postfix
220
+ - postmaster
221
+ - posts
222
+ - proc
223
+ - profile
224
+ - project
225
+ - projects
226
+ - promo
227
+ - pub
228
+ - public
229
+ - python
230
+ - random
231
+ - register
232
+ - registration
233
+ - root
234
+ - rss
235
+ - ruby
236
+ - run
237
+ - sale
238
+ - sales
239
+ - sample
240
+ - samples
241
+ - sbin
242
+ - script
243
+ - scripts
244
+ - search
245
+ - secure
246
+ - security
247
+ - send
248
+ - server
249
+ - service
250
+ - setting
251
+ - settings
252
+ - setup
253
+ - shop
254
+ - signin
255
+ - signup
256
+ - site
257
+ - sitemap
258
+ - sites
259
+ - smtp
260
+ - soporte
261
+ - sql
262
+ - srv
263
+ - ssh
264
+ - stage
265
+ - staging
266
+ - start
267
+ - stat
268
+ - static
269
+ - stats
270
+ - status
271
+ - store
272
+ - stores
273
+ - subdomain
274
+ - subscribe
275
+ - suporte
276
+ - support
277
+ - sys
278
+ - system
279
+ - tablet
280
+ - tablets
281
+ - talk
282
+ - task
283
+ - tasks
284
+ - tech
285
+ - telnet
286
+ - temp
287
+ - test
288
+ - test1
289
+ - test2
290
+ - test3
291
+ - teste
292
+ - tests
293
+ - theme
294
+ - themes
295
+ - tmp
296
+ - todo
297
+ - tools
298
+ - tv
299
+ - update
300
+ - upload
301
+ - url
302
+ - usage
303
+ - user
304
+ - username
305
+ - usr
306
+ - usuario
307
+ - var
308
+ - vendas
309
+ - video
310
+ - videos
311
+ - visitor
312
+ - web
313
+ - webmail
314
+ - webmaster
315
+ - website
316
+ - websites
317
+ - win
318
+ - workshop
319
+ - ww
320
+ - wws
321
+ - www
322
+ - www1
323
+ - www2
324
+ - www3
325
+ - www4
326
+ - www5
327
+ - www6
328
+ - www7
329
+ - wwws
330
+ - wwww
331
+ - xpg
332
+ - xxx
333
+ - you
334
+ - yourdomain
335
+ - yourname
336
+ - yoursite
337
+ - yourusername
338
+
339
+ # Academic
340
+ - academe
341
+ - academia
342
+ - academic
343
+ - academician
344
+ - admission
345
+ - alumni
346
+ - assessment
347
+ - assignment
348
+ - bsc
349
+ - campus
350
+ - classroom
351
+ - college
352
+ - colleges
353
+ - conservatory
354
+ - diplomas
355
+ - doctorate
356
+ - donnish
357
+ - education
358
+ - educational
359
+ - employee
360
+ - faculty
361
+ - graduate
362
+ - institute
363
+ - institution
364
+ - instructional
365
+ - intellectual
366
+ - lab
367
+ - laboratory
368
+ - learning
369
+ - msc
370
+ - office
371
+ - pedagogic
372
+ - pedagogical
373
+ - pedantic
374
+ - phd
375
+ - postgraduate
376
+ - professor
377
+ - professors
378
+ - pupil
379
+ - research
380
+ - scholar
381
+ - scholarly
382
+ - scholars
383
+ - scholarship
384
+ - scholastic
385
+ - school
386
+ - schooling
387
+ - schools
388
+ - science
389
+ - scientific
390
+ - student
391
+ - syllabus
392
+ - teacher
393
+ - teachers
394
+ - teaching
395
+ - theoretical
396
+ - theory
397
+ - tuition
398
+ - undergraduate
399
+ - universities
400
+ - university
401
+ - vocational
402
+
403
+ # Ruby
404
+ - alias
405
+ - and
406
+ - begin
407
+ - break
408
+ - case
409
+ - class
410
+ - def
411
+ - defined?
412
+ - do
413
+ - else
414
+ - elsif
415
+ - end
416
+ - ensure
417
+ - 'false'
418
+ - for
419
+ - if
420
+ - in
421
+ - module
422
+ - next
423
+ - nil
424
+ - not
425
+ - or
426
+ - redo
427
+ - rescue
428
+ - retry
429
+ - return
430
+ - self
431
+ - super
432
+ - then
433
+ - 'true'
434
+ - undef
435
+ - unless
436
+ - until
437
+ - when
438
+ - while
439
+ - yield
440
+
441
+ # SQL https://www.drupal.org/docs/develop/coding-standards/list-of-sql-reserved-words
442
+ - a
443
+ - abort
444
+ - abs
445
+ - absolute
446
+ - access
447
+ - action
448
+ - ada
449
+ - add
450
+ - admin
451
+ - after
452
+ - aggregate
453
+ - alias
454
+ - all
455
+ - allocate
456
+ - also
457
+ - alter
458
+ - always
459
+ - analyse
460
+ - analyze
461
+ - and
462
+ - any
463
+ - are
464
+ - array
465
+ - as
466
+ - asc
467
+ - asensitive
468
+ - assertion
469
+ - assignment
470
+ - asymmetric
471
+ - at
472
+ - atomic
473
+ - attribute
474
+ - attributes
475
+ - audit
476
+ - authorization
477
+ - auto_increment
478
+ - avg
479
+ - avg_row_length
480
+ - backup
481
+ - backward
482
+ - before
483
+ - begin
484
+ - bernoulli
485
+ - between
486
+ - bigint
487
+ - binary
488
+ - bit
489
+ - bit_length
490
+ - bitvar
491
+ - blob
492
+ - bool
493
+ - boolean
494
+ - both
495
+ - breadth
496
+ - break
497
+ - browse
498
+ - bulk
499
+ - by
500
+ - c
501
+ - cache
502
+ - call
503
+ - called
504
+ - cardinality
505
+ - cascade
506
+ - cascaded
507
+ - case
508
+ - cast
509
+ - catalog
510
+ - catalog_name
511
+ - ceil
512
+ - ceiling
513
+ - chain
514
+ - change
515
+ - char
516
+ - char_length
517
+ - character
518
+ - character_length
519
+ - character_set_catalog
520
+ - character_set_name
521
+ - character_set_schema
522
+ - characteristics
523
+ - characters
524
+ - check
525
+ - checked
526
+ - checkpoint
527
+ - checksum
528
+ - class
529
+ - class_origin
530
+ - clob
531
+ - close
532
+ - cluster
533
+ - clustered
534
+ - coalesce
535
+ - cobol
536
+ - collate
537
+ - collation
538
+ - collation_catalog
539
+ - collation_name
540
+ - collation_schema
541
+ - collect
542
+ - column
543
+ - column_name
544
+ - columns
545
+ - command_function
546
+ - command_function_code
547
+ - comment
548
+ - commit
549
+ - committed
550
+ - completion
551
+ - compress
552
+ - compute
553
+ - condition
554
+ - condition_number
555
+ - connect
556
+ - connection
557
+ - connection_name
558
+ - constraint
559
+ - constraint_catalog
560
+ - constraint_name
561
+ - constraint_schema
562
+ - constraints
563
+ - constructor
564
+ - contains
565
+ - containstable
566
+ - continue
567
+ - conversion
568
+ - convert
569
+ - copy
570
+ - corr
571
+ - corresponding
572
+ - count
573
+ - covar_pop
574
+ - covar_samp
575
+ - create
576
+ - createdb
577
+ - createrole
578
+ - createuser
579
+ - cross
580
+ - csv
581
+ - cube
582
+ - cume_dist
583
+ - current
584
+ - current_date
585
+ - current_default_transform_group
586
+ - current_path
587
+ - current_role
588
+ - current_time
589
+ - current_timestamp
590
+ - current_transform_group_for_type
591
+ - current_user
592
+ - cursor
593
+ - cursor_name
594
+ - cycle
595
+ - data
596
+ - database
597
+ - databases
598
+ - date
599
+ - datetime
600
+ - datetime_interval_code
601
+ - datetime_interval_precision
602
+ - day
603
+ - day_hour
604
+ - day_microsecond
605
+ - day_minute
606
+ - day_second
607
+ - dayofmonth
608
+ - dayofweek
609
+ - dayofyear
610
+ - dbcc
611
+ - deallocate
612
+ - dec
613
+ - decimal
614
+ - declare
615
+ - default
616
+ - defaults
617
+ - deferrable
618
+ - deferred
619
+ - defined
620
+ - definer
621
+ - degree
622
+ - delay_key_write
623
+ - delayed
624
+ - delete
625
+ - delimiter
626
+ - delimiters
627
+ - dense_rank
628
+ - deny
629
+ - depth
630
+ - deref
631
+ - derived
632
+ - desc
633
+ - describe
634
+ - descriptor
635
+ - destroy
636
+ - destructor
637
+ - deterministic
638
+ - diagnostics
639
+ - dictionary
640
+ - disable
641
+ - disconnect
642
+ - disk
643
+ - dispatch
644
+ - distinct
645
+ - distinctrow
646
+ - distributed
647
+ - div
648
+ - do
649
+ - domain
650
+ - double
651
+ - drop
652
+ - dual
653
+ - dummy
654
+ - dump
655
+ - dynamic
656
+ - dynamic_function
657
+ - dynamic_function_code
658
+ - each
659
+ - element
660
+ - else
661
+ - elseif
662
+ - enable
663
+ - enclosed
664
+ - encoding
665
+ - encrypted
666
+ - end
667
+ - end-exec
668
+ - enum
669
+ - equals
670
+ - errlvl
671
+ - escape
672
+ - escaped
673
+ - every
674
+ - except
675
+ - exception
676
+ - exclude
677
+ - excluding
678
+ - exclusive
679
+ - exec
680
+ - execute
681
+ - existing
682
+ - exists
683
+ - exit
684
+ - exp
685
+ - explain
686
+ - external
687
+ - extract
688
+ - false
689
+ - fetch
690
+ - fields
691
+ - file
692
+ - fillfactor
693
+ - filter
694
+ - final
695
+ - first
696
+ - float
697
+ - float4
698
+ - float8
699
+ - floor
700
+ - flush
701
+ - following
702
+ - for
703
+ - force
704
+ - foreign
705
+ - fortran
706
+ - forward
707
+ - found
708
+ - free
709
+ - freetext
710
+ - freetexttable
711
+ - freeze
712
+ - from
713
+ - full
714
+ - fulltext
715
+ - function
716
+ - fusion
717
+ - g
718
+ - general
719
+ - generated
720
+ - get
721
+ - global
722
+ - go
723
+ - goto
724
+ - grant
725
+ - granted
726
+ - grants
727
+ - greatest
728
+ - group
729
+ - grouping
730
+ - handler
731
+ - having
732
+ - header
733
+ - heap
734
+ - hierarchy
735
+ - high_priority
736
+ - hold
737
+ - holdlock
738
+ - host
739
+ - hosts
740
+ - hour
741
+ - hour_microsecond
742
+ - hour_minute
743
+ - hour_second
744
+ - identified
745
+ - identity
746
+ - identity_insert
747
+ - identitycol
748
+ - if
749
+ - ignore
750
+ - ilike
751
+ - immediate
752
+ - immutable
753
+ - implementation
754
+ - implicit
755
+ - in
756
+ - include
757
+ - including
758
+ - increment
759
+ - index
760
+ - indicator
761
+ - infile
762
+ - infix
763
+ - inherit
764
+ - inherits
765
+ - initial
766
+ - initialize
767
+ - initially
768
+ - inner
769
+ - inout
770
+ - input
771
+ - insensitive
772
+ - insert
773
+ - insert_id
774
+ - instance
775
+ - instantiable
776
+ - instead
777
+ - int
778
+ - int1
779
+ - int2
780
+ - int3
781
+ - int4
782
+ - int8
783
+ - integer
784
+ - intersect
785
+ - intersection
786
+ - interval
787
+ - into
788
+ - invoker
789
+ - is
790
+ - isam
791
+ - isnull
792
+ - isolation
793
+ - iterate
794
+ - join
795
+ - k
796
+ - key
797
+ - key_member
798
+ - key_type
799
+ - keys
800
+ - kill
801
+ - lancompiler
802
+ - language
803
+ - large
804
+ - last
805
+ - last_insert_id
806
+ - lateral
807
+ - leading
808
+ - least
809
+ - leave
810
+ - left
811
+ - length
812
+ - less
813
+ - level
814
+ - like
815
+ - limit
816
+ - lineno
817
+ - lines
818
+ - listen
819
+ - ln
820
+ - load
821
+ - local
822
+ - localtime
823
+ - localtimestamp
824
+ - location
825
+ - locator
826
+ - lock
827
+ - login
828
+ - logs
829
+ - long
830
+ - longblob
831
+ - longtext
832
+ - loop
833
+ - low_priority
834
+ - lower
835
+ - m
836
+ - map
837
+ - match
838
+ - matched
839
+ - max
840
+ - max_rows
841
+ - maxextents
842
+ - maxvalue
843
+ - mediumblob
844
+ - mediumint
845
+ - mediumtext
846
+ - member
847
+ - merge
848
+ - message_length
849
+ - message_octet_length
850
+ - message_text
851
+ - method
852
+ - middleint
853
+ - min
854
+ - min_rows
855
+ - minus
856
+ - minute
857
+ - minute_microsecond
858
+ - minute_second
859
+ - minvalue
860
+ - mlslabel
861
+ - mod
862
+ - mode
863
+ - modifies
864
+ - modify
865
+ - module
866
+ - month
867
+ - monthname
868
+ - more
869
+ - move
870
+ - multiset
871
+ - mumps
872
+ - myisam
873
+ - name
874
+ - names
875
+ - national
876
+ - natural
877
+ - nchar
878
+ - nclob
879
+ - nesting
880
+ - new
881
+ - next
882
+ - 'no'
883
+ - no_write_to_binlog
884
+ - noaudit
885
+ - nocheck
886
+ - nocompress
887
+ - nocreatedb
888
+ - nocreaterole
889
+ - nocreateuser
890
+ - noinherit
891
+ - nologin
892
+ - nonclustered
893
+ - none
894
+ - normalize
895
+ - normalized
896
+ - nosuperuser
897
+ - not
898
+ - nothing
899
+ - notify
900
+ - notnull
901
+ - nowait
902
+ - null
903
+ - nullable
904
+ - nullif
905
+ - nulls
906
+ - number
907
+ - numeric
908
+ - object
909
+ - octet_length
910
+ - octets
911
+ - of
912
+ - 'off'
913
+ - offline
914
+ - offset
915
+ - offsets
916
+ - oids
917
+ - old
918
+ - 'on'
919
+ - online
920
+ - only
921
+ - open
922
+ - opendatasource
923
+ - openquery
924
+ - openrowset
925
+ - openxml
926
+ - operation
927
+ - operator
928
+ - optimize
929
+ - option
930
+ - optionally
931
+ - options
932
+ - or
933
+ - order
934
+ - ordering
935
+ - ordinality
936
+ - others
937
+ - out
938
+ - outer
939
+ - outfile
940
+ - output
941
+ - over
942
+ - overlaps
943
+ - overlay
944
+ - overriding
945
+ - owner
946
+ - pack_keys
947
+ - pad
948
+ - parameter
949
+ - parameter_mode
950
+ - parameter_name
951
+ - parameter_ordinal_position
952
+ - parameter_specific_catalog
953
+ - parameter_specific_name
954
+ - parameter_specific_schema
955
+ - parameters
956
+ - partial
957
+ - partition
958
+ - pascal
959
+ - password
960
+ - path
961
+ - pctfree
962
+ - percent
963
+ - percent_rank
964
+ - percentile_cont
965
+ - percentile_disc
966
+ - placing
967
+ - plan
968
+ - pli
969
+ - position
970
+ - postfix
971
+ - power
972
+ - preceding
973
+ - precision
974
+ - prefix
975
+ - preorder
976
+ - prepare
977
+ - prepared
978
+ - preserve
979
+ - primary
980
+ - print
981
+ - prior
982
+ - privileges
983
+ - proc
984
+ - procedural
985
+ - procedure
986
+ - process
987
+ - processlist
988
+ - public
989
+ - purge
990
+ - quote
991
+ - raid0
992
+ - raiserror
993
+ - range
994
+ - rank
995
+ - raw
996
+ - read
997
+ - reads
998
+ - readtext
999
+ - real
1000
+ - recheck
1001
+ - reconfigure
1002
+ - recursive
1003
+ - ref
1004
+ - references
1005
+ - referencing
1006
+ - regexp
1007
+ - regr_avgx
1008
+ - regr_avgy
1009
+ - regr_count
1010
+ - regr_intercept
1011
+ - regr_r2
1012
+ - regr_slope
1013
+ - regr_sxx
1014
+ - regr_sxy
1015
+ - regr_syy
1016
+ - reindex
1017
+ - relative
1018
+ - release
1019
+ - reload
1020
+ - rename
1021
+ - repeat
1022
+ - repeatable
1023
+ - replace
1024
+ - replication
1025
+ - require
1026
+ - reset
1027
+ - resignal
1028
+ - resource
1029
+ - restart
1030
+ - restore
1031
+ - restrict
1032
+ - result
1033
+ - return
1034
+ - returned_cardinality
1035
+ - returned_length
1036
+ - returned_octet_length
1037
+ - returned_sqlstate
1038
+ - returns
1039
+ - revoke
1040
+ - right
1041
+ - rlike
1042
+ - role
1043
+ - rollback
1044
+ - rollup
1045
+ - routine
1046
+ - routine_catalog
1047
+ - routine_name
1048
+ - routine_schema
1049
+ - row
1050
+ - row_count
1051
+ - row_number
1052
+ - rowcount
1053
+ - rowguidcol
1054
+ - rowid
1055
+ - rownum
1056
+ - rows
1057
+ - rule
1058
+ - save
1059
+ - savepoint
1060
+ - scale
1061
+ - schema
1062
+ - schema_name
1063
+ - schemas
1064
+ - scope
1065
+ - scope_catalog
1066
+ - scope_name
1067
+ - scope_schema
1068
+ - scroll
1069
+ - search
1070
+ - second
1071
+ - second_microsecond
1072
+ - section
1073
+ - security
1074
+ - select
1075
+ - self
1076
+ - sensitive
1077
+ - separator
1078
+ - sequence
1079
+ - serializable
1080
+ - server_name
1081
+ - session
1082
+ - session_user
1083
+ - set
1084
+ - setof
1085
+ - sets
1086
+ - setuser
1087
+ - share
1088
+ - show
1089
+ - shutdown
1090
+ - signal
1091
+ - similar
1092
+ - simple
1093
+ - size
1094
+ - smallint
1095
+ - some
1096
+ - soname
1097
+ - source
1098
+ - space
1099
+ - spatial
1100
+ - specific
1101
+ - specific_name
1102
+ - specifictype
1103
+ - sql
1104
+ - sql_big_result
1105
+ - sql_big_selects
1106
+ - sql_big_tables
1107
+ - sql_calc_found_rows
1108
+ - sql_log_off
1109
+ - sql_log_update
1110
+ - sql_low_priority_updates
1111
+ - sql_select_limit
1112
+ - sql_small_result
1113
+ - sql_warnings
1114
+ - sqlca
1115
+ - sqlcode
1116
+ - sqlerror
1117
+ - sqlexception
1118
+ - sqlstate
1119
+ - sqlwarning
1120
+ - sqrt
1121
+ - ssl
1122
+ - stable
1123
+ - start
1124
+ - starting
1125
+ - state
1126
+ - statement
1127
+ - static
1128
+ - statistics
1129
+ - status
1130
+ - stddev_pop
1131
+ - stddev_samp
1132
+ - stdin
1133
+ - stdout
1134
+ - storage
1135
+ - straight_join
1136
+ - strict
1137
+ - string
1138
+ - structure
1139
+ - style
1140
+ - subclass_origin
1141
+ - sublist
1142
+ - submultiset
1143
+ - substring
1144
+ - successful
1145
+ - sum
1146
+ - superuser
1147
+ - symmetric
1148
+ - synonym
1149
+ - sysdate
1150
+ - sysid
1151
+ - system
1152
+ - system_user
1153
+ - table
1154
+ - table_name
1155
+ - tables
1156
+ - tablesample
1157
+ - tablespace
1158
+ - temp
1159
+ - template
1160
+ - temporary
1161
+ - terminate
1162
+ - terminated
1163
+ - text
1164
+ - textsize
1165
+ - than
1166
+ - then
1167
+ - ties
1168
+ - time
1169
+ - timestamp
1170
+ - timezone_hour
1171
+ - timezone_minute
1172
+ - tinyblob
1173
+ - tinyint
1174
+ - tinytext
1175
+ - to
1176
+ - toast
1177
+ - top
1178
+ - top_level_count
1179
+ - trailing
1180
+ - tran
1181
+ - transaction
1182
+ - transaction_active
1183
+ - transactions_committed
1184
+ - transactions_rolled_back
1185
+ - transform
1186
+ - transforms
1187
+ - translate
1188
+ - translation
1189
+ - treat
1190
+ - trigger
1191
+ - trigger_catalog
1192
+ - trigger_name
1193
+ - trigger_schema
1194
+ - trim
1195
+ - true
1196
+ - truncate
1197
+ - trusted
1198
+ - tsequal
1199
+ - type
1200
+ - uescape
1201
+ - uid
1202
+ - unbounded
1203
+ - uncommitted
1204
+ - under
1205
+ - undo
1206
+ - unencrypted
1207
+ - union
1208
+ - unique
1209
+ - unknown
1210
+ - unlisten
1211
+ - unlock
1212
+ - unnamed
1213
+ - unnest
1214
+ - unsigned
1215
+ - until
1216
+ - update
1217
+ - updatetext
1218
+ - upper
1219
+ - usage
1220
+ - use
1221
+ - user
1222
+ - user_defined_type_catalog
1223
+ - user_defined_type_code
1224
+ - user_defined_type_name
1225
+ - user_defined_type_schema
1226
+ - using
1227
+ - utc_date
1228
+ - utc_time
1229
+ - utc_timestamp
1230
+ - vacuum
1231
+ - valid
1232
+ - validate
1233
+ - validator
1234
+ - value
1235
+ - values
1236
+ - var_pop
1237
+ - var_samp
1238
+ - varbinary
1239
+ - varchar
1240
+ - varchar2
1241
+ - varcharacter
1242
+ - variable
1243
+ - variables
1244
+ - varying
1245
+ - verbose
1246
+ - view
1247
+ - volatile
1248
+ - waitfor
1249
+ - when
1250
+ - whenever
1251
+ - where
1252
+ - while
1253
+ - width_bucket
1254
+ - window
1255
+ - with
1256
+ - within
1257
+ - without
1258
+ - work
1259
+ - write
1260
+ - writetext
1261
+ - x509
1262
+ - xor
1263
+ - year
1264
+ - year_month
1265
+ - zerofill
1266
+ - zone