Class: ActiveRecord::ConnectionAdapters::IBM_DataServer
- Inherits:
-
Object
- Object
- ActiveRecord::ConnectionAdapters::IBM_DataServer
- Defined in:
- lib/active_record/connection_adapters/ibm_db_adapter.rb
Overview
This class contains common code across DB’s (DB2 LUW, zOS, i5 and IDS)
Instance Method Summary collapse
- #change_column_default(table_name, column_name, default) ⇒ Object
- #change_column_null(table_name, column_name, null, default) ⇒ Object
- #check_reserved_words(col_name) ⇒ Object
- #create_index_after_table(table_name, cloumn_name) ⇒ Object
- #execute(sql, name = nil) ⇒ Object
- #get_datetime_mapping ⇒ Object
- #get_double_mapping ⇒ Object
- #get_limit_offset_clauses(limit, offset) ⇒ Object
- #get_time_mapping ⇒ Object
-
#initialize(adapter, ar3) ⇒ IBM_DataServer
constructor
A new instance of IBM_DataServer.
- #last_generated_id(stmt) ⇒ Object
- #limit_not_supported_types ⇒ Object
-
#prepare(sql, name = nil) ⇒ Object
Praveen.
- #query_offset_limit(sql, offset, limit) ⇒ Object
- #query_offset_limit!(sql, offset, limit, options) ⇒ Object
-
#remove_column(table_name, column_name) ⇒ Object
This is supported by the DB2 for Linux, UNIX, Windows data servers and by the DB2 for i5 data servers.
- #reorg_table(table_name) ⇒ Object
- #select(stmt) ⇒ Object
- #select_rows(sql, name, stmt, results) ⇒ Object
- #set_binary_default(value) ⇒ Object
- #set_binary_value ⇒ Object
- #set_case(value) ⇒ Object
- #set_schema(schema) ⇒ Object
- #set_text_default ⇒ Object
- #setup_for_lob_table ⇒ Object
Constructor Details
#initialize(adapter, ar3) ⇒ IBM_DataServer
Returns a new instance of IBM_DataServer.
2165 2166 2167 2168 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2165 def initialize(adapter, ar3) @adapter = adapter @isAr3 = ar3 end |
Instance Method Details
#change_column_default(table_name, column_name, default) ⇒ Object
2312 2313 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2312 def change_column_default(table_name, column_name, default) end |
#change_column_null(table_name, column_name, null, default) ⇒ Object
2315 2316 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2315 def change_column_null(table_name, column_name, null, default) end |
#check_reserved_words(col_name) ⇒ Object
2182 2183 2184 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2182 def check_reserved_words(col_name) col_name.to_s end |
#create_index_after_table(table_name, cloumn_name) ⇒ Object
2173 2174 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2173 def create_index_after_table (table_name,cloumn_name) end |
#execute(sql, name = nil) ⇒ Object
2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2274 def execute(sql, name = nil) begin if stmt = IBM_DB.exec(@adapter.connection, sql) stmt # Return the statement object else raise StatementInvalid, IBM_DB.getErrormsg(@adapter.connection, IBM_DB::DB_CONN ) end rescue StandardError => exec_err if exec_err && !exec_err..empty? raise "Failed to execute statement due to: #{exec_err}" else raise end end end |
#get_datetime_mapping ⇒ Object
2303 2304 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2303 def get_datetime_mapping end |
#get_double_mapping ⇒ Object
2309 2310 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2309 def get_double_mapping end |
#get_limit_offset_clauses(limit, offset) ⇒ Object
2297 2298 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2297 def get_limit_offset_clauses(limit, offset) end |
#get_time_mapping ⇒ Object
2306 2307 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2306 def get_time_mapping end |
#last_generated_id(stmt) ⇒ Object
2170 2171 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2170 def last_generated_id(stmt) end |
#limit_not_supported_types ⇒ Object
2330 2331 2332 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2330 def limit_not_supported_types [:integer, :double, :date, :time, :timestamp, :xml, :bigint] end |
#prepare(sql, name = nil) ⇒ Object
Praveen
2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2257 def prepare(sql,name = nil) begin stmt = IBM_DB.prepare(@adapter.connection, sql) if( stmt ) stmt else raise StatementInvalid, IBM_DB.getErrormsg(@adapter.connection, IBM_DB::DB_CONN ) end rescue StandardError => prep_err if prep_err && !prep_err..empty? raise "Failed to prepare sql #{sql} due to: #{prep_err}" else raise end end end |
#query_offset_limit(sql, offset, limit) ⇒ Object
2294 2295 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2294 def query_offset_limit(sql, offset, limit) end |
#query_offset_limit!(sql, offset, limit, options) ⇒ Object
2300 2301 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2300 def query_offset_limit!(sql, offset, limit, ) end |
#remove_column(table_name, column_name) ⇒ Object
This is supported by the DB2 for Linux, UNIX, Windows data servers and by the DB2 for i5 data servers
2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2188 def remove_column(table_name, column_name) begin @adapter.execute "ALTER TABLE #{table_name} DROP #{column_name}" reorg_table(table_name) rescue StandardError => exec_err # Provide details on the current XML columns support if exec_err..include?('SQLCODE=-1242') && exec_err..include?('42997') raise StatementInvalid, "A column that is part of a table containing an XML column cannot be dropped. \ To remove the column, the table must be dropped and recreated without the #{column_name} column: #{exec_err}" else raise "#{exec_err}" end end end |
#reorg_table(table_name) ⇒ Object
2179 2180 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2179 def reorg_table(table_name) end |
#select(stmt) ⇒ Object
2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2204 def select(stmt) results = [] # Fetches all the results available. IBM_DB.fetch_assoc(stmt) returns # an hash for each single record. # The loop stops when there aren't any more valid records to fetch begin if(@isAr3) while single_hash = IBM_DB.fetch_assoc(stmt) # Add the record to the +results+ array results << single_hash end else while single_hash = IBM_DB.fetch_array(stmt) # Add the record to the +results+ array results << single_hash end end rescue StandardError => fetch_error # Handle driver fetch errors error_msg = IBM_DB.getErrormsg(stmt, IBM_DB::DB_STMT ) if error_msg && !error_msg.empty? raise StatementInvalid,"Failed to retrieve data: #{error_msg}" else error_msg = "An unexpected error occurred during data retrieval" error_msg = error_msg + ": #{fetch_error.}" if !fetch_error..empty? raise error_msg end end return results end |
#select_rows(sql, name, stmt, results) ⇒ Object
2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2234 def select_rows(sql, name, stmt, results) # Fetches all the results available. IBM_DB.fetch_array(stmt) returns # an array representing a row in a result set. # The loop stops when there aren't any more valid records to fetch begin while single_array = IBM_DB.fetch_array(stmt) #Add the array to results array results << single_array end rescue StandardError => fetch_error # Handle driver fetch errors error_msg = IBM_DB.getErrormsg(stmt, IBM_DB::DB_STMT ) if error_msg && !error_msg.empty? raise StatementInvalid,"Failed to retrieve data: #{error_msg}" else error_msg = "An unexpected error occurred during data retrieval" error_msg = error_msg + ": #{fetch_error.}" if !fetch_error..empty? raise error_msg end end return results end |
#set_binary_default(value) ⇒ Object
2318 2319 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2318 def set_binary_default(value) end |
#set_binary_value ⇒ Object
2321 2322 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2321 def set_binary_value end |
#set_case(value) ⇒ Object
2327 2328 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2327 def set_case(value) end |
#set_schema(schema) ⇒ Object
2290 2291 2292 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2290 def set_schema(schema) @adapter.execute("SET SCHEMA #{schema}") end |
#set_text_default ⇒ Object
2324 2325 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2324 def set_text_default end |
#setup_for_lob_table ⇒ Object
2176 2177 |
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 2176 def setup_for_lob_table () end |