module ActiveRecord::ConnectionAdapters::Hanaclient::DatabaseStatements

Public Instance Methods

commit_db_transaction() click to toggle source
# File lib/active_record/connection_adapters/hanaclient/database_statements.rb, line 76
def commit_db_transaction()
  HA.instance.api.hanaclient_commit(@connection)
end
default_sequence_name(table, column) click to toggle source
# File lib/active_record/connection_adapters/hanaclient/database_statements.rb, line 84
        def default_sequence_name(table, column)
          query_value(<<-end_sql, "SCHEMA")
            SELECT SEQUENCE_NAME FROM SEQUENCES WHERE SEQUENCE_NAME like ('%' || (SELECT column_id from table_columns where table_name = #{quote(table.gsub('"', ''))} AND column_name = #{quote(column.gsub('"', ''))}) || '%')
          end_sql
        end
empty_insert_statement_value() click to toggle source

This is not supported. Can't insert an empty column

# File lib/active_record/connection_adapters/hanaclient/database_statements.rb, line 109
def empty_insert_statement_value
  raise NotImplementedError
end
exec_delete(sql, name = nil, binds = []) click to toggle source

Executes delete sql statement in the context of this connection using binds as the bind substitutes. name is logged along with the executed sql statement.

# File lib/active_record/connection_adapters/hanaclient/database_statements.rb, line 65
def exec_delete(sql, name = nil, binds = [])
  exec_and_clear(sql, name, binds) do |stmt|
    HA.instance.api.hanaclient_affected_rows(stmt)
  end
end
Also aliased as: exec_update
exec_insert(sql, name = nil, binds = [], pk = nil, sequence_name = nil) click to toggle source
# File lib/active_record/connection_adapters/hanaclient/database_statements.rb, line 48
def exec_insert(sql, name = nil, binds = [], pk = nil, sequence_name = nil)
  result = exec_query(sql, name, binds)
  unless sequence_name
    table_ref = extract_table_ref_from_insert_sql(sql)
    if table_ref
      pk = primary_key(table_ref) if pk.nil?
      pk = suppress_composite_primary_key(pk)
      sequence_name = default_sequence_name(table_ref, pk)
    end
    return result unless sequence_name
  end
  last_insert_id_result(sequence_name)
end
exec_query(sql, name = "SQL", binds = [], prepare: false) click to toggle source

Executes sql statement in the context of this connection using binds as the bind substitutes. name is logged along with the executed sql statement.

# File lib/active_record/connection_adapters/hanaclient/database_statements.rb, line 19
def exec_query(sql, name = "SQL", binds = [], prepare: false)
  exec_and_clear(sql, name, binds, prepare: prepare) do |stmt|
    record = []
    columns = []

    max_cols = HA.instance.api.hanaclient_num_cols(stmt)
    if( max_cols > 0 )
      columns = max_cols.times.collect{ |x| HA.instance.api.hanaclient_get_column_info(stmt, x)[2] }

      while HA.instance.api.hanaclient_fetch_next(stmt) == 1
        result = []

        max_cols.times do |cols|
          result << HA.instance.api.hanaclient_get_column(stmt, cols)[1]
        end

        record << result
      end
    end

    ActiveRecord::Result.new(columns, record)
  end
end
exec_rollback_db_transaction() click to toggle source
# File lib/active_record/connection_adapters/hanaclient/database_statements.rb, line 80
def exec_rollback_db_transaction()
  HA.instance.api.hanaclient_rollback(@connection)
end
exec_update(sql, name = nil, binds = [])
Alias for: exec_delete
execute(sql, name = nil) click to toggle source

Executes the SQL statement in the context of this connection and returns the raw result from the connection adapter.

# File lib/active_record/connection_adapters/hanaclient/database_statements.rb, line 7
def execute(sql, name = nil)
  log(sql, name) do
    if HA.instance.api.hanaclient_execute_immediate(@connection, sql) == 0
      result, errstr = HA.instance.api.hanaclient_error(@connection)
      raise ActiveRecord::StatementInvalid.new(errstr)
    end
  end
end
insert_fixtures(fixtures, table_name) click to toggle source
# File lib/active_record/connection_adapters/hanaclient/database_statements.rb, line 90
def insert_fixtures(fixtures, table_name)
  fixtures.each do |fixture|
    insert_fixture(fixture, table_name)
  end
end
insert_fixtures_set(fixture_set, tables_to_delete = []) click to toggle source
# File lib/active_record/connection_adapters/hanaclient/database_statements.rb, line 96
def insert_fixtures_set(fixture_set, tables_to_delete = [])
  disable_referential_integrity do
    transaction(requires_new: true) do
      tables_to_delete.each { |table| delete "DELETE FROM #{quote_table_name(table)}", "Fixture Delete" }

      fixture_set.each do |table_name, rows|
        rows.each { |row| insert_fixture(row, table_name) }
      end
    end
  end
end
truncate(table_name, name = nil) click to toggle source

Executes the truncate statement.

# File lib/active_record/connection_adapters/hanaclient/database_statements.rb, line 44
def truncate(table_name, name = nil)
  exec_query("TRUNCATE TABLE #{quote_table_name(table_name)}", name)
end

Private Instance Methods

suppress_composite_primary_key(pk) click to toggle source
# File lib/active_record/connection_adapters/hanaclient/database_statements.rb, line 114
def suppress_composite_primary_key(pk)
  pk unless pk.is_a?(Array)
end