Module: ChDB::SQLProcessor
- Included in:
- Statement
- Defined in:
- lib/chdb/sql_processor.rb
Overview
This module provides functionality for processing SQL queries, including binding variables and escaping values.
Instance Method Summary collapse
Instance Method Details
#escape(value) ⇒ Object
20 21 22 23 24 25 26 27 28 |
# File 'lib/chdb/sql_processor.rb', line 20 def escape(value) case value when String then "'#{value.gsub("'", "''")}'" when NilClass then 'NULL' when TrueClass then '1' when FalseClass then '0' else value.to_s end end |
#process_sql ⇒ Object
9 10 11 12 13 14 15 16 17 18 |
# File 'lib/chdb/sql_processor.rb', line 9 def process_sql placeholders = @sql.scan(/(?<!\\)\?/).size if placeholders != @bind_vars.size raise ChDB::SQLException, "Wrong number of bind variables (#{@bind_vars.size} for #{placeholders})" end escaped_values = @bind_vars.map { |v| escape(v) } sql = @sql.dup sql.gsub(/(?<!\\)\?/) { escaped_values.shift or '?' } end |