omu-support 0.1.1

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