Object representing json_table calls
Classes and Modules
Public Class methods
new(expr, path, opts=OPTS, &block)
See JSONBaseOp#table for documentation on the options.
[show source]
# File lib/sequel/extensions/pg_json_ops.rb 1232 def initialize(expr, path, opts=OPTS, &block) 1233 @expr = expr 1234 @path = path 1235 @passing = opts[:passing] 1236 @on_error = opts[:on_error] 1237 @columns = opts[:_columns] || ColumnDSL.columns(&block) 1238 freeze 1239 end
Public Instance methods
sequel_ast_transform(transformer)
Support transforming of json_table expression
[show source]
# File lib/sequel/extensions/pg_json_ops.rb 1269 def sequel_ast_transform(transformer) 1270 opts = {:on_error=>@on_error, :_columns=>@columns} 1271 1272 if @passing 1273 passing = opts[:passing] = {} 1274 @passing.each do |k, v| 1275 passing[k] = transformer.call(v) 1276 end 1277 end 1278 1279 self.class.new(transformer.call(@expr), @path, opts) 1280 end
to_s_append(ds, sql)
Append the json_table function call expression to the SQL
[show source]
# File lib/sequel/extensions/pg_json_ops.rb 1242 def to_s_append(ds, sql) 1243 sql << 'json_table(' 1244 ds.literal_append(sql, @expr) 1245 sql << ', ' 1246 default_literal_append(ds, sql, @path) 1247 1248 if (passing = @passing) && !passing.empty? 1249 sql << ' PASSING ' 1250 comma = false 1251 passing.each do |k, v| 1252 if comma 1253 sql << ', ' 1254 else 1255 comma = true 1256 end 1257 ds.literal_append(sql, v) 1258 sql << " AS " 1259 ds.send(:identifier_append, sql, k) 1260 end 1261 end 1262 1263 to_s_append_columns(ds, sql, @columns) 1264 sql << TABLE_ON_ERROR_SQL.fetch(@on_error) if @on_error 1265 sql << ')' 1266 end