Module Sequel::Access
In: lib/sequel/adapters/shared/access.rb

Methods

Included Modules

EmulateOffsetWithReverseAndCount UnmodifiedIdentifiers::DatasetMethods

Classes and Modules

Module Sequel::Access::DatabaseMethods
Module Sequel::Access::DatasetMethods

Constants

EXTRACT_MAP = {:year=>"'yyyy'", :month=>"'m'", :day=>"'d'", :hour=>"'h'", :minute=>"'n'", :second=>"'s'"}.freeze
OPS = {:'%'=>' Mod '.freeze, :'||'=>' & '.freeze}.freeze
CAST_TYPES = {String=>:CStr, Integer=>:CLng, Date=>:CDate, Time=>:CDate, DateTime=>:CDate, Numeric=>:CDec, BigDecimal=>:CDec, File=>:CStr, Float=>:CDbl, TrueClass=>:CBool, FalseClass=>:CBool}.freeze

Public Instance methods

Access doesn‘t support CASE, so emulate it with nested IIF function calls.

[Source]

    # File lib/sequel/adapters/shared/access.rb, line 93
93:       def case_expression_sql_append(sql, ce)
94:         literal_append(sql, ce.with_merged_expression.conditions.reverse.inject(ce.default){|exp,(cond,val)| Sequel::SQL::Function.new(:IIF, cond, val, exp)})
95:       end

Access doesn‘t support CAST, it uses separate functions for type conversion

[Source]

     # File lib/sequel/adapters/shared/access.rb, line 99
 99:       def cast_sql_append(sql, expr, type)
100:         sql << CAST_TYPES.fetch(type, type).to_s
101:         sql << '('
102:         literal_append(sql, expr)
103:         sql << ')'
104:       end

[Source]

     # File lib/sequel/adapters/shared/access.rb, line 106
106:       def complex_expression_sql_append(sql, op, args)
107:         case op
108:         when :ILIKE
109:           complex_expression_sql_append(sql, :LIKE, args)
110:         when 'NOT ILIKE''NOT ILIKE'
111:           complex_expression_sql_append(sql, 'NOT LIKE''NOT LIKE', args)
112:         when '!=''!='
113:           sql << '('
114:           literal_append(sql, args[0])
115:           sql << ' <> '
116:           literal_append(sql, args[1])
117:           sql << ')'
118:         when '%''%', '||''||'
119:           sql << '('
120:           c = false
121:           op_str = OPS[op]
122:           args.each do |a|
123:             sql << op_str if c
124:             literal_append(sql, a)
125:             c ||= true
126:           end
127:           sql << ')'
128:         when :**
129:           sql << '('
130:           literal_append(sql, args[0])
131:           sql << ' ^ '
132:           literal_append(sql, args[1])
133:           sql << ')'
134:         when :extract
135:           part = args[0]
136:           raise(Sequel::Error, "unsupported extract argument: #{part.inspect}") unless format = EXTRACT_MAP[part]
137:           sql << "datepart(" << format.to_s << ', '
138:           literal_append(sql, args[1])
139:           sql << ')'
140:         else
141:           super
142:         end
143:       end

Use Date(), Now(), and Time() for CURRENT_DATE, CURRENT_TIMESTAMP, and CURRENT_TIME

[Source]

     # File lib/sequel/adapters/shared/access.rb, line 146
146:       def constant_sql_append(sql, constant)
147:         case constant
148:         when :CURRENT_DATE
149:           sql << 'Date()'
150:         when :CURRENT_TIMESTAMP
151:           sql << 'Now()'
152:         when :CURRENT_TIME
153:           sql << 'Time()'
154:         else
155:           super
156:         end
157:       end

Emulate cross join by using multiple tables in the FROM clause.

[Source]

     # File lib/sequel/adapters/shared/access.rb, line 160
160:       def cross_join(table)
161:         clone(:from=>@opts[:from] + [table])
162:       end

Access uses [] to escape metacharacters, instead of backslashes.

[Source]

     # File lib/sequel/adapters/shared/access.rb, line 165
165:       def escape_like(string)
166:         string.gsub(/[\\*#?\[]/){|m| "[#{m}]"}
167:       end

Specify a table for a SELECT … INTO query.

[Source]

     # File lib/sequel/adapters/shared/access.rb, line 170
170:       def into(table)
171:         clone(:into => table)
172:       end

Access does not support derived column lists.

[Source]

     # File lib/sequel/adapters/shared/access.rb, line 175
175:       def supports_derived_column_lists?
176:         false
177:       end

Access doesn‘t support INTERSECT or EXCEPT

[Source]

     # File lib/sequel/adapters/shared/access.rb, line 180
180:       def supports_intersect_except?
181:         false
182:       end

Access does not support IS TRUE

[Source]

     # File lib/sequel/adapters/shared/access.rb, line 185
185:       def supports_is_true?
186:         false
187:       end

Access doesn‘t support JOIN USING

[Source]

     # File lib/sequel/adapters/shared/access.rb, line 190
190:       def supports_join_using?
191:         false
192:       end

Access does not support multiple columns for the IN/NOT IN operators

[Source]

     # File lib/sequel/adapters/shared/access.rb, line 195
195:       def supports_multiple_column_in?
196:         false
197:       end

Access doesn‘t support truncate, so do a delete instead.

[Source]

     # File lib/sequel/adapters/shared/access.rb, line 200
200:       def truncate
201:         delete
202:         nil
203:       end

[Validate]