Module: ActiveRecord::ConnectionAdapters::Duckdb::DatabaseStatementsRails8

Included in:
ActiveRecord::ConnectionAdapters::DuckdbAdapter
Defined in:
lib/active_record/connection_adapters/duckdb/database_statements_rails8.rb

Instance Method Summary collapse

Instance Method Details

#raw_execute(sql, name = nil, binds = [], prepare: false, async: false, allow_retry: false, materialize_transactions: true, batch: false) ⇒ DuckDB::Result

Executes raw SQL and returns the native DuckDB result. Called by Rails 8's internal_execute → raw_execute chain.

Parameters:

  • sql (String)

    The SQL query to execute

  • name (String) (defaults to: nil)

    Query name for logging

  • binds (Array) (defaults to: [])

    Array of bind parameters

  • prepare (Boolean) (defaults to: false)

    Whether to use prepared statement (unused by DuckDB)

  • async (Boolean) (defaults to: false)

    Whether to execute asynchronously (unused by DuckDB)

  • allow_retry (Boolean) (defaults to: false)

    Whether to allow retrying on failure

  • materialize_transactions (Boolean) (defaults to: true)

    Whether to materialize transactions

  • batch (Boolean) (defaults to: false)

    Whether this is a batch operation (unused by DuckDB)

Returns:

  • (DuckDB::Result)

    The raw DuckDB result



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/active_record/connection_adapters/duckdb/database_statements_rails8.rb', line 23

def raw_execute(sql, name = nil, binds = [], prepare: false, async: false, allow_retry: false, materialize_transactions: true, batch: false)
  casted_binds = type_casted_binds(binds)

  log(sql, name, binds, casted_binds, async: async) do
    with_raw_connection(allow_retry:, materialize_transactions:) do |conn|
      if casted_binds.empty?
        conn.query(sql)
      else
        conn.query(sql, *casted_binds)
      end
    end
  end
end