ibm_db 5.6.1-arm64-darwin-24 → 5.7.0-arm64-darwin-24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (602) hide show
  1. checksums.yaml +4 -4
  2. data/ext/Makefile +17 -14
  3. data/ext/extconf.rb +176 -110
  4. data/ext/ibm_db.bundle +0 -0
  5. data/ext/ibm_db.bundle.dSYM/Contents/Info.plist +20 -0
  6. data/ext/ibm_db.bundle.dSYM/Contents/Resources/DWARF/ibm_db.bundle +0 -0
  7. data/ext/ibm_db.bundle.dSYM/Contents/Resources/Relocations/aarch64/ibm_db.bundle.yml +5 -0
  8. data/ext/ibm_db.c +60 -0
  9. data/ext/ibm_db.o +0 -0
  10. data/ext/mkmf.log +7 -7
  11. data/ext/ruby_ibm_db_cli.c +14 -10
  12. data/ext/ruby_ibm_db_cli.h +4 -0
  13. data/ext/ruby_ibm_db_cli.o +0 -0
  14. data/lib/IBM_DB.rb +2 -2
  15. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +1254 -277
  16. data/lib/mswin/ibm_db.rb +105 -0
  17. data/lib/mswin/rb2x/i386/ruby25/ibm_db.so +0 -0
  18. data/lib/mswin/rb2x/i386/ruby26/ibm_db.so +0 -0
  19. data/lib/mswin/rb2x/i386/ruby27/ibm_db.so +0 -0
  20. data/lib/mswin/rb3x/i386/ruby30/ibm_db.so +0 -0
  21. data/lib/mswin/rb4x/x64/ruby40/ibm_db.so +0 -0
  22. data/test/active_record/connection_adapters/fake_legacy_adapter.rb +17 -0
  23. data/test/active_record/connection_adapters/fake_misleading_legacy_adapter.rb +8 -0
  24. data/test/activejob/destroy_association_async_job_test.rb +62 -0
  25. data/test/activejob/destroy_association_async_test.rb +147 -11
  26. data/test/activejob/job_runtime_test.rb +41 -0
  27. data/test/activejob/unloadable_base_job.rb +3 -0
  28. data/test/cases/active_record_schema_test.rb +196 -0
  29. data/test/cases/active_record_test.rb +21 -0
  30. data/test/cases/adapter_prevent_writes_test.rb +26 -202
  31. data/test/cases/adapter_test.rb +592 -82
  32. data/test/cases/adapters/abstract_mysql_adapter/active_schema_test.rb +210 -0
  33. data/test/cases/adapters/abstract_mysql_adapter/adapter_prevent_writes_test.rb +111 -0
  34. data/test/cases/adapters/abstract_mysql_adapter/auto_increment_test.rb +48 -0
  35. data/test/cases/adapters/abstract_mysql_adapter/bind_parameter_test.rb +91 -0
  36. data/test/cases/adapters/abstract_mysql_adapter/case_sensitivity_test.rb +65 -0
  37. data/test/cases/adapters/abstract_mysql_adapter/charset_collation_test.rb +85 -0
  38. data/test/cases/adapters/abstract_mysql_adapter/connection_test.rb +267 -0
  39. data/test/cases/adapters/abstract_mysql_adapter/count_deleted_rows_with_lock_test.rb +29 -0
  40. data/test/cases/adapters/abstract_mysql_adapter/json_test.rb +24 -0
  41. data/test/cases/adapters/abstract_mysql_adapter/mysql_boolean_test.rb +102 -0
  42. data/test/cases/adapters/abstract_mysql_adapter/mysql_enum_test.rb +47 -0
  43. data/test/cases/adapters/abstract_mysql_adapter/mysql_explain_test.rb +71 -0
  44. data/test/cases/adapters/abstract_mysql_adapter/nested_deadlock_test.rb +191 -0
  45. data/test/cases/adapters/abstract_mysql_adapter/optimizer_hints_test.rb +69 -0
  46. data/test/cases/adapters/abstract_mysql_adapter/quoting_test.rb +49 -0
  47. data/test/cases/adapters/abstract_mysql_adapter/schema_migrations_test.rb +68 -0
  48. data/test/cases/adapters/abstract_mysql_adapter/schema_test.rb +130 -0
  49. data/test/cases/adapters/abstract_mysql_adapter/set_test.rb +32 -0
  50. data/test/cases/adapters/abstract_mysql_adapter/sp_test.rb +39 -0
  51. data/test/cases/adapters/abstract_mysql_adapter/sql_types_test.rb +16 -0
  52. data/test/cases/adapters/abstract_mysql_adapter/table_options_test.rb +125 -0
  53. data/test/cases/adapters/abstract_mysql_adapter/transaction_test.rb +204 -0
  54. data/test/cases/adapters/abstract_mysql_adapter/unsigned_type_test.rb +77 -0
  55. data/test/cases/adapters/abstract_mysql_adapter/virtual_column_test.rb +69 -0
  56. data/test/cases/adapters/abstract_mysql_adapter/warnings_test.rb +109 -0
  57. data/test/cases/adapters/mysql2/check_constraint_quoting_test.rb +35 -0
  58. data/test/cases/adapters/mysql2/dbconsole_test.rb +87 -0
  59. data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +136 -10
  60. data/test/cases/adapters/mysql2/mysql2_rake_test.rb +433 -0
  61. data/test/cases/adapters/postgresql/active_schema_test.rb +8 -4
  62. data/test/cases/adapters/postgresql/array_test.rb +6 -6
  63. data/test/cases/adapters/postgresql/bind_parameter_test.rb +52 -0
  64. data/test/cases/adapters/postgresql/bit_string_test.rb +2 -2
  65. data/test/cases/adapters/postgresql/bytea_test.rb +3 -3
  66. data/test/cases/adapters/postgresql/case_insensitive_test.rb +1 -1
  67. data/test/cases/adapters/postgresql/change_schema_test.rb +32 -1
  68. data/test/cases/adapters/postgresql/cidr_test.rb +17 -0
  69. data/test/cases/adapters/postgresql/citext_test.rb +7 -1
  70. data/test/cases/adapters/postgresql/collation_test.rb +1 -1
  71. data/test/cases/adapters/postgresql/composite_test.rb +1 -1
  72. data/test/cases/adapters/postgresql/connection_test.rb +43 -36
  73. data/test/cases/adapters/postgresql/create_unlogged_tables_test.rb +3 -2
  74. data/test/cases/adapters/postgresql/datatype_test.rb +9 -4
  75. data/test/cases/adapters/postgresql/date_test.rb +2 -2
  76. data/test/cases/adapters/postgresql/dbconsole_test.rb +109 -0
  77. data/test/cases/adapters/postgresql/deferred_constraints_test.rb +55 -0
  78. data/test/cases/adapters/postgresql/domain_test.rb +1 -1
  79. data/test/cases/adapters/postgresql/enum_test.rb +208 -8
  80. data/test/cases/adapters/postgresql/explain_test.rb +25 -6
  81. data/test/cases/adapters/postgresql/extension_migration_test.rb +51 -9
  82. data/test/cases/adapters/postgresql/foreign_table_test.rb +3 -3
  83. data/test/cases/adapters/postgresql/full_text_test.rb +1 -1
  84. data/test/cases/adapters/postgresql/geometric_test.rb +13 -6
  85. data/test/cases/adapters/postgresql/hstore_test.rb +22 -32
  86. data/test/cases/adapters/postgresql/infinity_test.rb +13 -2
  87. data/test/cases/adapters/postgresql/integer_test.rb +1 -1
  88. data/test/cases/adapters/postgresql/interval_test.rb +9 -17
  89. data/test/cases/adapters/postgresql/invertible_migration_test.rb +139 -0
  90. data/test/cases/adapters/postgresql/json_test.rb +5 -0
  91. data/test/cases/adapters/postgresql/ltree_test.rb +1 -1
  92. data/test/cases/adapters/postgresql/money_test.rb +17 -9
  93. data/test/cases/adapters/postgresql/network_test.rb +13 -1
  94. data/test/cases/adapters/postgresql/numbers_test.rb +18 -2
  95. data/test/cases/adapters/postgresql/optimizer_hints_test.rb +9 -9
  96. data/test/cases/adapters/postgresql/partitions_test.rb +5 -2
  97. data/test/cases/adapters/postgresql/postgresql_adapter_prevent_writes_test.rb +7 -110
  98. data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +403 -20
  99. data/test/cases/adapters/postgresql/postgresql_rake_test.rb +637 -0
  100. data/test/cases/adapters/postgresql/prepared_statements_disabled_test.rb +1 -1
  101. data/test/cases/adapters/postgresql/quoting_test.rb +60 -1
  102. data/test/cases/adapters/postgresql/range_test.rb +185 -21
  103. data/test/cases/adapters/postgresql/referential_integrity_test.rb +29 -5
  104. data/test/cases/adapters/postgresql/rename_table_test.rb +35 -8
  105. data/test/cases/adapters/postgresql/schema_authorization_test.rb +2 -2
  106. data/test/cases/adapters/postgresql/schema_test.rb +270 -20
  107. data/test/cases/adapters/postgresql/serial_test.rb +5 -5
  108. data/test/cases/adapters/postgresql/statement_pool_test.rb +6 -2
  109. data/test/cases/adapters/postgresql/timestamp_test.rb +122 -5
  110. data/test/cases/adapters/postgresql/transaction_nested_test.rb +130 -6
  111. data/test/cases/adapters/postgresql/transaction_test.rb +37 -11
  112. data/test/cases/adapters/postgresql/type_lookup_test.rb +1 -1
  113. data/test/cases/adapters/postgresql/uuid_test.rb +77 -9
  114. data/test/cases/adapters/postgresql/virtual_column_test.rb +114 -0
  115. data/test/cases/adapters/postgresql/xml_test.rb +1 -1
  116. data/test/cases/adapters/sqlite3/bind_parameter_test.rb +52 -0
  117. data/test/cases/adapters/sqlite3/collation_test.rb +1 -1
  118. data/test/cases/adapters/sqlite3/copy_table_test.rb +28 -7
  119. data/test/cases/adapters/sqlite3/dbconsole_test.rb +81 -0
  120. data/test/cases/adapters/sqlite3/explain_test.rb +3 -3
  121. data/test/cases/adapters/sqlite3/quoting_test.rb +34 -3
  122. data/test/cases/adapters/sqlite3/sqlite3_adapter_prevent_writes_test.rb +9 -102
  123. data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +727 -72
  124. data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +6 -3
  125. data/test/cases/adapters/sqlite3/sqlite_rake_test.rb +264 -0
  126. data/test/cases/adapters/sqlite3/statement_pool_test.rb +1 -1
  127. data/test/cases/adapters/sqlite3/transaction_test.rb +6 -3
  128. data/test/cases/adapters/sqlite3/virtual_column_test.rb +138 -0
  129. data/test/cases/adapters/sqlite3/virtual_table_test.rb +51 -0
  130. data/test/cases/adapters/trilogy/dbconsole_test.rb +76 -0
  131. data/test/cases/adapters/trilogy/trilogy_adapter_test.rb +473 -0
  132. data/test/cases/adapters/trilogy/trilogy_rake_test.rb +433 -0
  133. data/test/cases/aggregations_test.rb +16 -0
  134. data/test/cases/annotate_test.rb +14 -12
  135. data/test/cases/arel/attributes/attribute_test.rb +86 -47
  136. data/test/cases/arel/collectors/bind_test.rb +1 -1
  137. data/test/cases/arel/collectors/composite_test.rb +11 -1
  138. data/test/cases/arel/collectors/sql_string_test.rb +1 -1
  139. data/test/cases/arel/collectors/substitute_bind_collector_test.rb +1 -1
  140. data/test/cases/arel/delete_manager_test.rb +0 -6
  141. data/test/cases/arel/factory_methods_test.rb +45 -0
  142. data/test/cases/arel/insert_manager_test.rb +1 -7
  143. data/test/cases/arel/nodes/as_test.rb +12 -0
  144. data/test/cases/arel/nodes/ascending_test.rb +1 -1
  145. data/test/cases/arel/nodes/bin_test.rb +1 -1
  146. data/test/cases/arel/nodes/bound_sql_literal_test.rb +31 -0
  147. data/test/cases/arel/nodes/cte_test.rb +46 -0
  148. data/test/cases/arel/nodes/descending_test.rb +1 -1
  149. data/test/cases/arel/nodes/equality_test.rb +3 -3
  150. data/test/cases/arel/nodes/filter_test.rb +37 -0
  151. data/test/cases/arel/nodes/fragments_test.rb +38 -0
  152. data/test/cases/arel/nodes/homogeneous_in_test.rb +52 -0
  153. data/test/cases/arel/nodes/infix_operation_test.rb +1 -1
  154. data/test/cases/arel/nodes/node_test.rb +1 -1
  155. data/test/cases/arel/nodes/or_test.rb +2 -2
  156. data/test/cases/arel/nodes/sql_literal_test.rb +18 -1
  157. data/test/cases/arel/nodes/table_alias_test.rb +12 -0
  158. data/test/cases/arel/nodes/unary_operation_test.rb +1 -1
  159. data/test/cases/arel/nodes/update_statement_test.rb +4 -0
  160. data/test/cases/arel/nodes_test.rb +3 -2
  161. data/test/cases/arel/select_manager_test.rb +12 -12
  162. data/test/cases/arel/support/fake_record.rb +22 -17
  163. data/test/cases/arel/table_test.rb +15 -25
  164. data/test/cases/arel/update_manager_test.rb +51 -6
  165. data/test/cases/arel/visitors/dispatch_contamination_test.rb +1 -1
  166. data/test/cases/arel/visitors/dot_test.rb +177 -2
  167. data/test/cases/arel/visitors/mysql_test.rb +49 -1
  168. data/test/cases/arel/visitors/postgres_test.rb +1 -31
  169. data/test/cases/arel/visitors/sqlite_test.rb +1 -1
  170. data/test/cases/arel/visitors/to_sql_test.rb +330 -20
  171. data/test/cases/assertions/query_assertions_test.rb +136 -0
  172. data/test/cases/associations/belongs_to_associations_test.rb +502 -41
  173. data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +1 -1
  174. data/test/cases/associations/cascaded_eager_loading_test.rb +26 -15
  175. data/test/cases/associations/eager_load_nested_include_test.rb +1 -1
  176. data/test/cases/associations/eager_singularization_test.rb +1 -1
  177. data/test/cases/associations/eager_test.rb +255 -93
  178. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +25 -53
  179. data/test/cases/associations/has_many_associations_test.rb +282 -72
  180. data/test/cases/associations/has_many_through_associations_test.rb +172 -45
  181. data/test/cases/associations/has_many_through_disable_joins_associations_test.rb +197 -0
  182. data/test/cases/associations/has_one_associations_test.rb +160 -29
  183. data/test/cases/associations/has_one_through_associations_test.rb +64 -15
  184. data/test/cases/associations/has_one_through_disable_joins_associations_test.rb +82 -0
  185. data/test/cases/associations/inner_join_association_test.rb +36 -6
  186. data/test/cases/associations/inverse_associations_test.rb +177 -40
  187. data/test/cases/associations/join_model_test.rb +17 -12
  188. data/test/cases/associations/left_outer_join_association_test.rb +14 -3
  189. data/test/cases/associations/nested_error_test.rb +116 -0
  190. data/test/cases/associations/nested_through_associations_test.rb +54 -19
  191. data/test/cases/associations/required_test.rb +1 -1
  192. data/test/cases/associations_test.rb +1278 -21
  193. data/test/cases/asynchronous_queries_test.rb +310 -0
  194. data/test/cases/attribute_methods/read_test.rb +6 -0
  195. data/test/cases/attribute_methods/time_zone_converter_test.rb +21 -0
  196. data/test/cases/attribute_methods_test.rb +565 -46
  197. data/test/cases/attributes_test.rb +42 -1
  198. data/test/cases/autosave_association_test.rb +645 -92
  199. data/test/cases/base_prevent_writes_test.rb +28 -159
  200. data/test/cases/base_test.rb +434 -209
  201. data/test/cases/batches_test.rb +441 -57
  202. data/test/cases/binary_test.rb +31 -0
  203. data/test/cases/bind_parameter_test.rb +107 -16
  204. data/test/cases/cache_key_test.rb +7 -7
  205. data/test/cases/calculations_test.rb +541 -110
  206. data/test/cases/callbacks_test.rb +0 -1
  207. data/test/cases/clone_test.rb +5 -4
  208. data/test/cases/coders/yaml_column_test.rb +97 -2
  209. data/test/cases/collection_cache_key_test.rb +24 -16
  210. data/test/cases/column_alias_test.rb +2 -8
  211. data/test/cases/column_definition_test.rb +12 -3
  212. data/test/cases/comment_test.rb +23 -26
  213. data/test/cases/connection_adapters/adapter_leasing_test.rb +9 -9
  214. data/test/cases/connection_adapters/connection_handler_test.rb +145 -99
  215. data/test/cases/connection_adapters/connection_handlers_multi_db_test.rb +79 -55
  216. data/test/cases/connection_adapters/connection_handlers_multi_pool_config_test.rb +17 -20
  217. data/test/cases/connection_adapters/connection_handlers_sharding_db_test.rb +146 -55
  218. data/test/cases/connection_adapters/connection_swapping_nested_test.rb +136 -23
  219. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +96 -27
  220. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +5 -5
  221. data/test/cases/connection_adapters/registration_test.rb +98 -0
  222. data/test/cases/connection_adapters/schema_cache_test.rb +288 -135
  223. data/test/cases/connection_adapters/standalone_connection_test.rb +38 -0
  224. data/test/cases/connection_adapters/statement_pool_test.rb +29 -0
  225. data/test/cases/connection_adapters/type_lookup_test.rb +12 -24
  226. data/test/cases/connection_handling_test.rb +210 -0
  227. data/test/cases/connection_management_test.rb +44 -7
  228. data/test/cases/connection_pool_test.rb +466 -99
  229. data/test/cases/core_test.rb +167 -9
  230. data/test/cases/counter_cache_test.rb +129 -2
  231. data/test/cases/custom_locking_test.rb +3 -3
  232. data/test/cases/database_configurations/hash_config_test.rb +149 -13
  233. data/test/cases/database_configurations/resolver_test.rb +14 -10
  234. data/test/cases/database_configurations/url_config_test.rb +53 -0
  235. data/test/cases/database_configurations_test.rb +86 -43
  236. data/test/cases/database_selector_test.rb +30 -8
  237. data/test/cases/database_statements_test.rb +10 -14
  238. data/test/cases/date_time_precision_test.rb +141 -11
  239. data/test/cases/date_time_test.rb +19 -1
  240. data/test/cases/defaults_test.rb +107 -41
  241. data/test/cases/delegated_type_test.rb +69 -9
  242. data/test/cases/dirty_test.rb +82 -25
  243. data/test/cases/disconnected_test.rb +10 -9
  244. data/test/cases/dup_test.rb +26 -6
  245. data/test/cases/encryption/cipher/aes256_gcm_test.rb +50 -0
  246. data/test/cases/encryption/cipher_test.rb +65 -0
  247. data/test/cases/encryption/concurrency_test.rb +27 -0
  248. data/test/cases/encryption/config_test.rb +21 -0
  249. data/test/cases/encryption/configurable_test.rb +93 -0
  250. data/test/cases/encryption/contexts_test.rb +105 -0
  251. data/test/cases/encryption/derived_secret_key_provider_test.rb +31 -0
  252. data/test/cases/encryption/deterministic_key_provider_test.rb +11 -0
  253. data/test/cases/encryption/encryptable_record_api_test.rb +175 -0
  254. data/test/cases/encryption/encryptable_record_message_pack_serialized_test.rb +42 -0
  255. data/test/cases/encryption/encryptable_record_test.rb +470 -0
  256. data/test/cases/encryption/encrypted_fixtures_test.rb +22 -0
  257. data/test/cases/encryption/encrypting_only_encryptor_test.rb +20 -0
  258. data/test/cases/encryption/encryption_schemes_test.rb +240 -0
  259. data/test/cases/encryption/encryptor_test.rb +113 -0
  260. data/test/cases/encryption/envelope_encryption_key_provider_test.rb +49 -0
  261. data/test/cases/encryption/extended_deterministic_queries_test.rb +81 -0
  262. data/test/cases/encryption/helper.rb +152 -0
  263. data/test/cases/encryption/key_generator_test.rb +55 -0
  264. data/test/cases/encryption/key_provider_test.rb +57 -0
  265. data/test/cases/encryption/key_test.rb +17 -0
  266. data/test/cases/encryption/message_pack_message_serializer_test.rb +70 -0
  267. data/test/cases/encryption/message_serializer_test.rb +82 -0
  268. data/test/cases/encryption/message_test.rb +43 -0
  269. data/test/cases/encryption/null_encryptor_test.rb +21 -0
  270. data/test/cases/encryption/properties_test.rb +69 -0
  271. data/test/cases/encryption/read_only_null_encryptor_test.rb +19 -0
  272. data/test/cases/encryption/scheme_test.rb +58 -0
  273. data/test/cases/encryption/unencrypted_attributes_test.rb +27 -0
  274. data/test/cases/encryption/uniqueness_validations_test.rb +65 -0
  275. data/test/cases/enum_test.rb +374 -72
  276. data/test/cases/errors_test.rb +7 -4
  277. data/test/cases/excluding_test.rb +116 -0
  278. data/test/cases/explain_subscriber_test.rb +6 -1
  279. data/test/cases/explain_test.rb +119 -10
  280. data/test/cases/filter_attributes_test.rb +7 -14
  281. data/test/cases/finder_respond_to_test.rb +3 -3
  282. data/test/cases/finder_test.rb +357 -72
  283. data/test/cases/fixture_set/file_test.rb +9 -0
  284. data/test/cases/fixtures_test.rb +426 -190
  285. data/test/cases/helper.rb +66 -192
  286. data/test/cases/hot_compatibility_test.rb +10 -10
  287. data/test/cases/inheritance_test.rb +51 -61
  288. data/test/cases/inherited_test.rb +40 -0
  289. data/test/cases/insert_all_test.rb +419 -9
  290. data/test/cases/instrumentation_test.rb +202 -30
  291. data/test/cases/integration_test.rb +25 -7
  292. data/test/cases/invalid_connection_test.rb +5 -5
  293. data/test/cases/invertible_migration_test.rb +108 -24
  294. data/test/cases/json_attribute_test.rb +1 -0
  295. data/test/cases/json_serialization_test.rb +5 -5
  296. data/test/cases/json_shared_test_cases.rb +5 -9
  297. data/test/cases/locking_test.rb +67 -31
  298. data/test/cases/log_subscriber_test.rb +17 -15
  299. data/test/cases/marshal_serialization_test.rb +78 -5
  300. data/test/cases/message_pack_test.rb +91 -0
  301. data/test/cases/migration/change_schema_test.rb +77 -46
  302. data/test/cases/migration/change_table_test.rb +129 -114
  303. data/test/cases/migration/check_constraint_test.rb +192 -10
  304. data/test/cases/migration/column_attributes_test.rb +4 -9
  305. data/test/cases/migration/column_positioning_test.rb +2 -2
  306. data/test/cases/migration/columns_test.rb +118 -4
  307. data/test/cases/migration/command_recorder_test.rb +181 -14
  308. data/test/cases/migration/compatibility_test.rb +883 -196
  309. data/test/cases/migration/create_join_table_test.rb +8 -1
  310. data/test/cases/migration/exclusion_constraint_test.rb +192 -0
  311. data/test/cases/migration/foreign_key_test.rb +356 -14
  312. data/test/cases/migration/helper.rb +4 -1
  313. data/test/cases/migration/index_test.rb +67 -2
  314. data/test/cases/migration/invalid_options_test.rb +129 -0
  315. data/test/cases/migration/logger_test.rb +7 -4
  316. data/test/cases/migration/pending_migrations_test.rb +103 -60
  317. data/test/cases/migration/references_foreign_key_test.rb +73 -4
  318. data/test/cases/migration/references_index_test.rb +25 -27
  319. data/test/cases/migration/references_statements_test.rb +27 -3
  320. data/test/cases/migration/rename_table_test.rb +39 -54
  321. data/test/cases/migration/schema_definitions_test.rb +109 -0
  322. data/test/cases/migration/unique_constraint_test.rb +248 -0
  323. data/test/cases/migration_test.rb +677 -220
  324. data/test/cases/migrator_test.rb +102 -75
  325. data/test/cases/multi_db_migrator_test.rb +55 -34
  326. data/test/cases/multiparameter_attributes_test.rb +26 -29
  327. data/test/cases/multiple_db_test.rb +42 -19
  328. data/test/cases/nested_attributes_test.rb +124 -6
  329. data/test/cases/nested_attributes_with_callbacks_test.rb +2 -2
  330. data/test/cases/normalized_attribute_test.rb +117 -0
  331. data/test/cases/null_relation_test.rb +35 -2
  332. data/test/cases/persistence/reload_association_cache_test.rb +20 -0
  333. data/test/cases/persistence_test.rb +629 -22
  334. data/test/cases/pooled_connections_test.rb +57 -56
  335. data/test/cases/prepared_statement_status_test.rb +8 -3
  336. data/test/cases/primary_class_test.rb +134 -0
  337. data/test/cases/primary_keys_test.rb +171 -55
  338. data/test/cases/query_cache_test.rb +558 -263
  339. data/test/cases/query_logs_test.rb +293 -0
  340. data/test/cases/quoting_test.rb +39 -72
  341. data/test/cases/readonly_test.rb +50 -12
  342. data/test/cases/reaper_test.rb +22 -6
  343. data/test/cases/reflection_test.rb +207 -9
  344. data/test/cases/relation/and_test.rb +43 -0
  345. data/test/cases/relation/delegation_test.rb +32 -5
  346. data/test/cases/relation/delete_all_test.rb +27 -6
  347. data/test/cases/relation/field_ordered_values_test.rb +128 -0
  348. data/test/cases/relation/load_async_test.rb +650 -0
  349. data/test/cases/relation/merging_test.rb +80 -109
  350. data/test/cases/relation/mutation_test.rb +12 -7
  351. data/test/cases/relation/or_test.rb +11 -8
  352. data/test/cases/relation/order_test.rb +90 -0
  353. data/test/cases/relation/predicate_builder_test.rb +21 -6
  354. data/test/cases/relation/select_test.rb +162 -3
  355. data/test/cases/relation/structural_compatibility_test.rb +38 -0
  356. data/test/cases/relation/update_all_test.rb +81 -27
  357. data/test/cases/relation/where_chain_test.rb +190 -3
  358. data/test/cases/relation/where_clause_test.rb +43 -1
  359. data/test/cases/relation/where_test.rb +95 -7
  360. data/test/cases/relation/with_test.rb +165 -0
  361. data/test/cases/relation_test.rb +42 -37
  362. data/test/cases/relations_test.rb +436 -138
  363. data/test/cases/reload_models_test.rb +18 -14
  364. data/test/cases/reserved_word_test.rb +2 -1
  365. data/test/cases/result_test.rb +14 -22
  366. data/test/cases/sanitize_test.rb +89 -27
  367. data/test/cases/schema_dumper_test.rb +535 -62
  368. data/test/cases/scoping/default_scoping_test.rb +219 -35
  369. data/test/cases/scoping/named_scoping_test.rb +25 -46
  370. data/test/cases/scoping/relation_scoping_test.rb +112 -4
  371. data/test/cases/secure_password_test.rb +108 -0
  372. data/test/cases/secure_token_test.rb +72 -0
  373. data/test/cases/serialization_test.rb +1 -1
  374. data/test/cases/serialized_attribute_test.rb +305 -60
  375. data/test/cases/shard_keys_test.rb +125 -0
  376. data/test/cases/shard_selector_test.rb +45 -0
  377. data/test/cases/signed_id_test.rb +57 -5
  378. data/test/cases/statement_cache_test.rb +31 -30
  379. data/test/cases/statement_invalid_test.rb +8 -4
  380. data/test/cases/store_test.rb +73 -9
  381. data/test/cases/strict_loading_test.rb +327 -13
  382. data/test/cases/table_metadata_test.rb +16 -0
  383. data/test/cases/tasks/database_tasks_test.rb +517 -244
  384. data/test/cases/test_case.rb +254 -60
  385. data/test/cases/test_case_test.rb +69 -0
  386. data/test/cases/test_databases_test.rb +7 -3
  387. data/test/cases/test_fixtures_test.rb +19 -40
  388. data/test/cases/time_precision_test.rb +17 -5
  389. data/test/cases/timestamp_test.rb +124 -16
  390. data/test/cases/token_for_test.rb +165 -0
  391. data/test/cases/touch_later_test.rb +43 -1
  392. data/test/cases/transaction_callbacks_test.rb +325 -8
  393. data/test/cases/transaction_instrumentation_test.rb +453 -0
  394. data/test/cases/transaction_isolation_test.rb +12 -8
  395. data/test/cases/transactions_test.rb +629 -112
  396. data/test/cases/type/date_time_test.rb +7 -1
  397. data/test/cases/type/time_test.rb +9 -0
  398. data/test/cases/type/type_map_test.rb +108 -73
  399. data/test/cases/type/unsigned_integer_test.rb +12 -0
  400. data/test/cases/type_caster/connection_test.rb +19 -0
  401. data/test/cases/type_test.rb +1 -1
  402. data/test/cases/unconnected_test.rb +7 -7
  403. data/test/cases/unsafe_raw_sql_test.rb +39 -8
  404. data/test/cases/validations/absence_validation_test.rb +1 -1
  405. data/test/cases/validations/association_validation_test.rb +25 -3
  406. data/test/cases/validations/numericality_validation_test.rb +3 -9
  407. data/test/cases/validations/presence_validation_test.rb +1 -1
  408. data/test/cases/validations/uniqueness_validation_test.rb +280 -40
  409. data/test/cases/validations_test.rb +2 -2
  410. data/test/cases/view_test.rb +33 -22
  411. data/test/cases/yaml_serialization_test.rb +23 -17
  412. data/test/config.example.yml +58 -56
  413. data/test/config.rb +1 -0
  414. data/test/fixtures/1_need_quoting.yml +2 -0
  415. data/test/fixtures/accounts.yml +5 -0
  416. data/test/fixtures/aircrafts.yml +7 -0
  417. data/test/fixtures/book_identifiers.yml +11 -0
  418. data/test/fixtures/books.yml +5 -4
  419. data/test/fixtures/cake_designers.yml +5 -0
  420. data/test/fixtures/cars.yml +6 -0
  421. data/test/fixtures/chefs.yml +5 -0
  422. data/test/fixtures/clothing_items.yml +23 -0
  423. data/test/fixtures/clubs.yml +1 -1
  424. data/test/fixtures/comments.yml +2 -1
  425. data/test/fixtures/cpk_authors.yml +8 -0
  426. data/test/fixtures/cpk_books.yml +21 -0
  427. data/test/fixtures/cpk_order_agreements.yml +13 -0
  428. data/test/fixtures/cpk_order_tags.yml +15 -0
  429. data/test/fixtures/cpk_orders.yml +11 -0
  430. data/test/fixtures/cpk_posts.yml +12 -0
  431. data/test/fixtures/cpk_reviews.yml +13 -0
  432. data/test/fixtures/cpk_tags.yml +11 -0
  433. data/test/fixtures/drink_designers.yml +5 -0
  434. data/test/fixtures/encrypted_book_that_ignores_cases.yml +4 -0
  435. data/test/fixtures/encrypted_books.yml +4 -0
  436. data/test/fixtures/fk_object_to_point_to.yml +2 -0
  437. data/test/fixtures/memberships.yml +15 -15
  438. data/test/fixtures/paragraphs.yml +5 -0
  439. data/test/fixtures/parrots.yml +4 -0
  440. data/test/fixtures/people.yml +2 -0
  441. data/test/fixtures/pirates.yml +2 -2
  442. data/test/fixtures/primary_key_error/primary_key_error.yml +6 -0
  443. data/test/fixtures/references.yml +3 -3
  444. data/test/fixtures/sharded_blog_posts.yml +14 -0
  445. data/test/fixtures/sharded_blog_posts_tags.yml +27 -0
  446. data/test/fixtures/sharded_blogs.yml +8 -0
  447. data/test/fixtures/sharded_comments.yml +22 -0
  448. data/test/fixtures/sharded_tags.yml +34 -0
  449. data/test/fixtures/sponsors.yml +2 -2
  450. data/test/fixtures/topics.yml +1 -0
  451. data/test/fixtures/treasures.yml +4 -0
  452. data/test/fixtures/virtual_columns.yml +5 -0
  453. data/test/fixtures/warehouse_things.yml +1 -1
  454. data/test/migrations/old_and_new_versions/20210716122844_add_people_description.rb +5 -0
  455. data/test/migrations/old_and_new_versions/20210716123013_add_people_number_of_legs.rb +5 -0
  456. data/test/migrations/old_and_new_versions/230_add_people_hobby.rb +5 -0
  457. data/test/migrations/old_and_new_versions/231_add_people_last_name.rb +5 -0
  458. data/test/migrations/scope/1_unscoped.rb +7 -0
  459. data/test/migrations/scope/2_mysql_only.mysql.rb +7 -0
  460. data/test/models/admin/user.rb +2 -0
  461. data/test/models/admin/user_json.rb +48 -0
  462. data/test/models/attachment.rb +7 -0
  463. data/test/models/author.rb +70 -3
  464. data/test/models/author_encrypted.rb +16 -0
  465. data/test/models/bird.rb +1 -1
  466. data/test/models/book.rb +18 -11
  467. data/test/models/book_destroy_async.rb +1 -1
  468. data/test/models/book_encrypted.rb +106 -0
  469. data/test/models/book_identifier.rb +5 -0
  470. data/test/models/branch.rb +11 -0
  471. data/test/models/bulb.rb +1 -1
  472. data/test/models/car.rb +8 -1
  473. data/test/models/cat.rb +1 -1
  474. data/test/models/category.rb +3 -1
  475. data/test/models/chat_message.rb +8 -0
  476. data/test/models/chef.rb +52 -0
  477. data/test/models/clothing_item.rb +12 -0
  478. data/test/models/club.rb +4 -1
  479. data/test/models/comment.rb +7 -4
  480. data/test/models/comment_overlapping_counter_cache.rb +15 -0
  481. data/test/models/company.rb +16 -2
  482. data/test/models/computer.rb +1 -0
  483. data/test/models/contact.rb +3 -3
  484. data/test/models/contract.rb +5 -1
  485. data/test/models/cpk/author.rb +9 -0
  486. data/test/models/cpk/book.rb +55 -0
  487. data/test/models/cpk/book_destroy_async.rb +9 -0
  488. data/test/models/cpk/car.rb +9 -0
  489. data/test/models/cpk/car_review.rb +9 -0
  490. data/test/models/cpk/chapter.rb +16 -0
  491. data/test/models/cpk/chapter_destroy_async.rb +10 -0
  492. data/test/models/cpk/comment.rb +9 -0
  493. data/test/models/cpk/order.rb +55 -0
  494. data/test/models/cpk/order_agreement.rb +10 -0
  495. data/test/models/cpk/order_tag.rb +10 -0
  496. data/test/models/cpk/post.rb +10 -0
  497. data/test/models/cpk/posts_tag.rb +10 -0
  498. data/test/models/cpk/review.rb +9 -0
  499. data/test/models/cpk/tag.rb +10 -0
  500. data/test/models/cpk.rb +15 -0
  501. data/test/models/customer.rb +3 -1
  502. data/test/models/destroy_async_parent.rb +1 -1
  503. data/test/models/developer.rb +44 -3
  504. data/test/models/discount.rb +4 -0
  505. data/test/models/drink_designer.rb +1 -0
  506. data/test/models/editor.rb +8 -0
  507. data/test/models/editorship.rb +6 -0
  508. data/test/models/entry.rb +5 -0
  509. data/test/models/essay.rb +6 -1
  510. data/test/models/essay_destroy_async.rb +1 -0
  511. data/test/models/eye.rb +87 -21
  512. data/test/models/face.rb +1 -1
  513. data/test/models/friendship.rb +3 -0
  514. data/test/models/hardback.rb +7 -0
  515. data/test/models/hotel.rb +2 -0
  516. data/test/models/human.rb +2 -2
  517. data/test/models/invoice.rb +2 -1
  518. data/test/models/invokes_an_undefined_method.rb +5 -0
  519. data/test/models/line_item.rb +6 -0
  520. data/test/models/member.rb +9 -4
  521. data/test/models/membership.rb +2 -2
  522. data/test/models/message.rb +2 -1
  523. data/test/models/need_quoting.rb +5 -0
  524. data/test/models/paragraph.rb +5 -0
  525. data/test/models/parrot.rb +6 -3
  526. data/test/models/person.rb +7 -4
  527. data/test/models/pirate.rb +4 -1
  528. data/test/models/pk_autopopulated_by_a_trigger_record.rb +5 -0
  529. data/test/models/post.rb +65 -2
  530. data/test/models/post_encrypted.rb +15 -0
  531. data/test/models/post_with_prefetched_pk.rb +15 -0
  532. data/test/models/project.rb +1 -0
  533. data/test/models/publication.rb +16 -0
  534. data/test/models/raises_argument_error.rb +5 -0
  535. data/test/models/raises_no_method_error.rb +5 -0
  536. data/test/models/recipient.rb +5 -0
  537. data/test/models/reference.rb +1 -1
  538. data/test/models/reply.rb +1 -1
  539. data/test/models/room.rb +3 -0
  540. data/test/models/sharded/blog.rb +12 -0
  541. data/test/models/sharded/blog_post.rb +17 -0
  542. data/test/models/sharded/blog_post_destroy_async.rb +14 -0
  543. data/test/models/sharded/blog_post_tag.rb +11 -0
  544. data/test/models/sharded/blog_post_with_revision.rb +11 -0
  545. data/test/models/sharded/comment.rb +12 -0
  546. data/test/models/sharded/comment_destroy_async.rb +12 -0
  547. data/test/models/sharded/tag.rb +11 -0
  548. data/test/models/sharded.rb +8 -0
  549. data/test/models/ship.rb +1 -1
  550. data/test/models/shipping_line.rb +11 -0
  551. data/test/models/subscriber.rb +1 -0
  552. data/test/models/subscription.rb +3 -1
  553. data/test/models/too_long_table_name.rb +5 -0
  554. data/test/models/topic.rb +3 -1
  555. data/test/models/traffic_light.rb +2 -2
  556. data/test/models/traffic_light_encrypted.rb +21 -0
  557. data/test/models/translation.rb +9 -0
  558. data/test/models/treasure.rb +1 -1
  559. data/test/models/tyre.rb +1 -1
  560. data/test/models/user.rb +16 -0
  561. data/test/models/user_with_invalid_relation.rb +28 -0
  562. data/test/models/uuid_comment.rb +5 -0
  563. data/test/models/uuid_entry.rb +5 -0
  564. data/test/models/uuid_message.rb +5 -0
  565. data/test/models/zine.rb +2 -1
  566. data/test/schema/mysql2_specific_schema.rb +26 -12
  567. data/test/schema/postgresql_specific_schema.rb +121 -13
  568. data/test/schema/schema.rb +361 -103
  569. data/test/schema/sqlite_specific_schema.rb +17 -6
  570. data/test/schema/trilogy_specific_schema.rb +96 -0
  571. data/test/support/adapter_helper.rb +104 -0
  572. data/test/support/async_helper.rb +15 -0
  573. data/test/support/config.rb +1 -1
  574. data/test/support/connection.rb +14 -2
  575. data/test/support/ddl_helper.rb +1 -1
  576. data/test/support/fake_adapter.rb +42 -0
  577. data/test/support/load_schema_helper.rb +22 -0
  578. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_6_1_topic.dump +0 -0
  579. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_6_1_topic_associations.dump +0 -0
  580. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_7_1_topic.dump +0 -0
  581. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_7_1_topic_associations.dump +0 -0
  582. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_6_1_topic.dump +0 -0
  583. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_6_1_topic_associations.dump +0 -0
  584. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_7_1_topic.dump +0 -0
  585. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_7_1_topic_associations.dump +0 -0
  586. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_6_1_topic.dump +0 -0
  587. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_6_1_topic_associations.dump +0 -0
  588. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_7_1_topic.dump +0 -0
  589. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_7_1_topic_associations.dump +0 -0
  590. data/test/support/marshal_compatibility_fixtures/SQLite/rails_6_1_topic.dump +0 -0
  591. data/test/support/marshal_compatibility_fixtures/SQLite/rails_6_1_topic_associations.dump +0 -0
  592. data/test/support/marshal_compatibility_fixtures/SQLite/rails_7_1_topic.dump +0 -0
  593. data/test/support/marshal_compatibility_fixtures/SQLite/rails_7_1_topic_associations.dump +0 -0
  594. data/test/support/marshal_compatibility_fixtures/Trilogy/rails_6_1_topic.dump +0 -0
  595. data/test/support/marshal_compatibility_fixtures/Trilogy/rails_6_1_topic_associations.dump +0 -0
  596. data/test/support/marshal_compatibility_fixtures/Trilogy/rails_7_1_topic.dump +0 -0
  597. data/test/support/marshal_compatibility_fixtures/Trilogy/rails_7_1_topic_associations.dump +0 -0
  598. data/test/support/schema_dumping_helper.rb +15 -9
  599. data/test/support/tools.rb +37 -0
  600. data/test/support/yaml_compatibility_fixtures/rails_4_1_no_symbol.yml +22 -0
  601. metadata +256 -16
  602. data/lib/ibm_db.bundle +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 454c1910792f12341011ccc6e6b0be68d5702e4fb67fdebcb590ba049996d43c
4
- data.tar.gz: 143eea87bffbcd043372ce141111f65f829b7191cdac2984470766b2732952b7
3
+ metadata.gz: d42c9bc4281abb09d16b1af402b0ddb2af809b148d7e039c58419bc44d1a77c4
4
+ data.tar.gz: 926b69ec52cfc79a19a80418b5565ca3d29b24c5ae46b2e96f1b44cdff5db598
5
5
  SHA512:
6
- metadata.gz: 229c504fce0c644b64b0c57613f4982bb581326679a3e63393d36864585fd6a042f37988c56e01403297511647c61a9b7231afeea98ca25309d5c1316af1e85a
7
- data.tar.gz: 023cb8a646a7a940be6bab664600b82a7041a8bbe6f1e16444f3b94e6478920eee311b7b293c261f272c606e215347bcb55c1b99b0a5d2608c8405371f5b9fb3
6
+ metadata.gz: a0ba8023415c53e14d350644a342bbdb7dbdc6eb373eb2c91ec8353051cb1e7fededfc0ee33818bde554d6fa1b46480b8a163fd5cb53eb2e96209a8ac3157c60
7
+ data.tar.gz: 0537b8422a8fd615b8adab586d63fc550b4cce499b5c9e3ab9226c74601167f4718f4bdfb3f2b6d068d0f8abed2b9553d0b4137980b515a469e0f8aedf9782c9
data/ext/Makefile CHANGED
@@ -13,12 +13,12 @@ NULLCMD = :
13
13
  #### Start of system configuration section. ####
14
14
 
15
15
  srcdir = .
16
- topdir = /Users/pnarayanappa/ROR33/ruby_exe/include/ruby-3.3.0
16
+ topdir = /Users/pnarayanappa/ROR40/ruby_exe/include/ruby-4.0.0
17
17
  hdrdir = $(topdir)
18
- arch_hdrdir = /Users/pnarayanappa/ROR33/ruby_exe/include/ruby-3.3.0/arm64-darwin24
18
+ arch_hdrdir = /Users/pnarayanappa/ROR40/ruby_exe/include/ruby-4.0.0/arm64-darwin24
19
19
  PATH_SEPARATOR = :
20
20
  VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby
21
- prefix = $(DESTDIR)/Users/pnarayanappa/ROR33/ruby_exe
21
+ prefix = $(DESTDIR)/Users/pnarayanappa/ROR40/ruby_exe
22
22
  rubysitearchprefix = $(rubylibprefix)/$(sitearch)
23
23
  rubyarchprefix = $(rubylibprefix)/$(arch)
24
24
  rubylibprefix = $(libdir)/$(RUBY_BASE_NAME)
@@ -42,6 +42,7 @@ archincludedir = $(includedir)/$(arch)
42
42
  sitearchlibdir = $(libdir)/$(sitearch)
43
43
  archlibdir = $(libdir)/$(arch)
44
44
  ridir = $(datarootdir)/$(RI_BASE_NAME)
45
+ modular_gc_dir = $(DESTDIR)
45
46
  mandir = $(datarootdir)/man
46
47
  localedir = $(datarootdir)/locale
47
48
  libdir = $(exec_prefix)/lib
@@ -67,7 +68,7 @@ archdir = $(rubyarchdir)
67
68
 
68
69
  CC_WRAPPER =
69
70
  CC = clang
70
- CXX = clang++
71
+ CXX = clang++ -std=gnu++11
71
72
  LIBRUBY = $(LIBRUBY_A)
72
73
  LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
73
74
  LIBRUBYARG_SHARED =
@@ -78,29 +79,31 @@ COUTFLAG = -o $(empty)
78
79
  CSRCFLAG = $(empty)
79
80
 
80
81
  RUBY_EXTCONF_H = unicode_support_version.h
81
- cflags = -fdeclspec $(optflags) $(debugflags) $(warnflags)
82
+ cflags = $(hardenflags) -fdeclspec $(optflags) $(debugflags) $(warnflags)
82
83
  cxxflags =
83
84
  optflags = -O3 -fno-fast-math
84
85
  debugflags = -ggdb3
85
86
  warnflags = -Wall -Wextra -Wextra-tokens -Wdeprecated-declarations -Wdivision-by-zero -Wdiv-by-zero -Wimplicit-function-declaration -Wimplicit-int -Wpointer-arith -Wshorten-64-to-32 -Wwrite-strings -Wold-style-definition -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Wmisleading-indentation -Wundef
86
87
  cppflags =
87
88
  CCDLFLAGS = -fno-common
88
- CFLAGS = $(CCDLFLAGS) -I/Users/pnarayanappa/ROR33/libyaml/include $(cflags) -pipe $(ARCH_FLAG)
89
+ CFLAGS = $(CCDLFLAGS) -I/Users/pnarayanappa/ROR40/libyaml/include $(cflags) -pipe $(ARCH_FLAG)
89
90
  INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir)
90
91
  DEFS =
91
- CPPFLAGS = -DRUBY_EXTCONF_H=\"$(RUBY_EXTCONF_H)\" -I/Users/pnarayanappa/ROR33/ruby-ibmdb/IBM_DB_Adapter/ibm_db/ext/../lib/clidriver/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT $(DEFS) $(cppflags)
92
+ CPPFLAGS = -DRUBY_EXTCONF_H=\"$(RUBY_EXTCONF_H)\" -I/Users/pnarayanappa/ruby-ibmdb/IBM_DB_Adapter/ibm_db/ext/../lib/clidriver/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT $(DEFS) $(cppflags)
92
93
  CXXFLAGS = $(CCDLFLAGS) -fdeclspec $(ARCH_FLAG)
93
- ldflags = -L. -L/Users/pnarayanappa/ROR33/libyaml/lib -fstack-protector-strong
94
- dldflags = -L/Users/pnarayanappa/ROR33/libyaml/lib -Wl,-undefined,dynamic_lookup -bundle_loader '$(BUILTRUBY)'
94
+ ldflags = -L. -L/Users/pnarayanappa/ROR40/libyaml/lib -fstack-protector-strong
95
+ dldflags = -L/Users/pnarayanappa/ROR40/libyaml/lib -Wl,-undefined,dynamic_lookup -bundle_loader '$(BUILTRUBY)'
95
96
  ARCH_FLAG = -arch arm64
96
97
  DLDFLAGS = $(ldflags) $(dldflags) $(ARCH_FLAG)
97
98
  LDSHARED = $(CC) -dynamic -bundle
98
99
  LDSHAREDXX = $(CXX) -dynamic -bundle
100
+ POSTLINK = dsymutil $@ 2>/dev/null; { test -z '$(RUBY_CODESIGN)' || codesign -s '$(RUBY_CODESIGN)' $@; }
99
101
  AR = ar
102
+ LD = ld
100
103
  EXEEXT =
101
104
 
102
105
  RUBY_INSTALL_NAME = $(RUBY_BASE_NAME)
103
- RUBY_SO_NAME = ruby.3.3
106
+ RUBY_SO_NAME = ruby.4.0
104
107
  RUBYW_INSTALL_NAME =
105
108
  RUBY_VERSION_NAME = $(RUBY_BASE_NAME)-$(ruby_version)
106
109
  RUBYW_BASE_NAME = rubyw
@@ -108,7 +111,7 @@ RUBY_BASE_NAME = ruby
108
111
 
109
112
  arch = arm64-darwin24
110
113
  sitearch = $(arch)
111
- ruby_version = 3.3.0
114
+ ruby_version = 4.0.0
112
115
  ruby = $(bindir)/$(RUBY_BASE_NAME)
113
116
  RUBY = $(ruby)
114
117
  BUILTRUBY = $(bindir)/$(RUBY_BASE_NAME)
@@ -127,8 +130,8 @@ TOUCH = exit >
127
130
  #### End of system configuration section. ####
128
131
 
129
132
  preload =
130
- libpath = . $(libdir) /Users/pnarayanappa/ROR33/ruby-ibmdb/IBM_DB_Adapter/ibm_db/ext/../lib/clidriver/lib
131
- LIBPATH = -L. -L$(libdir) -L/Users/pnarayanappa/ROR33/ruby-ibmdb/IBM_DB_Adapter/ibm_db/ext/../lib/clidriver/lib
133
+ libpath = . $(libdir) /Users/pnarayanappa/ruby-ibmdb/IBM_DB_Adapter/ibm_db/ext/../lib/clidriver/lib
134
+ LIBPATH = -L. -L$(libdir) -L/Users/pnarayanappa/ruby-ibmdb/IBM_DB_Adapter/ibm_db/ext/../lib/clidriver/lib
132
135
  DEFFILE =
133
136
 
134
137
  CLEANFILES = mkmf.log
@@ -161,7 +164,7 @@ HDRDIR = $(sitehdrdir)$(target_prefix)
161
164
  ARCHHDRDIR = $(sitearchhdrdir)$(target_prefix)
162
165
  TARGET_SO_DIR =
163
166
  TARGET_SO = $(TARGET_SO_DIR)$(DLLIB)
164
- CLEANLIBS = $(TARGET_SO) $(TARGET_SO).dSYM
167
+ CLEANLIBS = $(TARGET_SO) $(TARGET_SO:=.dSYM)
165
168
  CLEANOBJS = $(OBJS) *.bak
166
169
  TARGET_SO_DIR_TIMESTAMP = $(TIMESTAMP_DIR)/.sitearchdir.time
167
170
 
data/ext/extconf.rb CHANGED
@@ -6,6 +6,7 @@ require 'zlib'
6
6
  require 'zip'
7
7
  require 'fileutils'
8
8
  require 'down'
9
+ require 'uri'
9
10
 
10
11
  # +----------------------------------------------------------------------+
11
12
  # | Licensed Materials - Property of IBM |
@@ -44,77 +45,97 @@ end
44
45
 
45
46
  DOWNLOADLINK = ''
46
47
  ZIP = false
48
+ PRIMARY_CLIDRIVER_BASE_URL = 'https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/'
49
+ FALLBACK_CLIDRIVER_BASE_URL = 'https://github.com/ibmdb/db2drivers/raw/main/clidriver/'
50
+ CLIFILENAME = ''
47
51
 
48
52
  if(RUBY_PLATFORM =~ /aix/i)
49
53
  #AIX
50
54
  if(is64Bit)
51
- puts "Detected platform - aix 64"
52
- DOWNLOADLINK = "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/aix64_odbc_cli.tar.gz"
55
+ puts "Detected platform - aix 64"
56
+ CLIFILENAME = 'aix64_odbc_cli.tar.gz'
53
57
  else
54
- puts "Detected platform - aix 32"
55
- DOWNLOADLINK = "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/aix32_odbc_cli.tar.gz"
58
+ puts "Detected platform - aix 32"
59
+ CLIFILENAME = 'aix32_odbc_cli.tar.gz'
56
60
  end
57
61
  elsif (RUBY_PLATFORM =~ /powerpc/ || RUBY_PLATFORM =~ /ppc/)
58
62
  #PPC
59
63
  if(is64Bit)
60
- puts "Detected platform - ppc linux 64"
61
- DOWNLOADLINK = "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/ppc64_odbc_cli.tar.gz"
64
+ puts "Detected platform - ppc linux 64"
65
+ CLIFILENAME = 'ppc64_odbc_cli.tar.gz'
62
66
  else
63
- puts "Detected platform - ppc linux 64"
64
- DOWNLOADLINK = "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/ppc32_odbc_cli.tar.gz"
67
+ puts "Detected platform - ppc linux 64"
68
+ CLIFILENAME = 'ppc32_odbc_cli.tar.gz'
65
69
  end
66
70
  elsif (RUBY_PLATFORM =~ /linux/)
67
71
  #x86
68
72
  if(is64Bit)
69
- puts "Detected platform - linux x86 64"
70
- DOWNLOADLINK = "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/linuxx64_odbc_cli.tar.gz"
73
+ puts "Detected platform - linux x86 64"
74
+ CLIFILENAME = 'linuxx64_odbc_cli.tar.gz'
71
75
  else
72
- puts "Detected platform - linux 32"
73
- DOWNLOADLINK = "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/linuxia32_odbc_cli.tar.gz"
76
+ puts "Detected platform - linux 32"
77
+ CLIFILENAME = 'linuxia32_odbc_cli.tar.gz'
74
78
  end
75
79
  elsif (RUBY_PLATFORM =~ /sparc/i)
76
80
  #Solaris
77
81
  if(is64Bit)
78
- puts "Detected platform - sun sparc64"
79
- DOWNLOADLINK = "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/sun64_odbc_cli.tar.gz"
82
+ puts "Detected platform - sun sparc64"
83
+ CLIFILENAME = 'sun64_odbc_cli.tar.gz'
80
84
  else
81
- puts "Detected platform - sun sparc32"
82
- DOWNLOADLINK = "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/sun32_odbc_cli.tar.gz"
85
+ puts "Detected platform - sun sparc32"
86
+ CLIFILENAME = 'sun32_odbc_cli.tar.gz'
83
87
  end
84
88
  elsif (RUBY_PLATFORM =~ /solaris/i)
85
89
  if(is64Bit)
86
- puts "Detected platform - sun amd64"
87
- DOWNLOADLINK = "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/sunamd64_odbc_cli.tar.gz"
90
+ puts "Detected platform - sun amd64"
91
+ CLIFILENAME = 'sunamd64_odbc_cli.tar.gz'
88
92
  else
89
- puts "Detected platform - sun amd32"
90
- DOWNLOADLINK = "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/sunamd32_odbc_cli.tar.gz"
93
+ puts "Detected platform - sun amd32"
94
+ CLIFILENAME = 'sunamd32_odbc_cli.tar.gz'
91
95
  end
92
96
  elsif (RUBY_PLATFORM =~ /darwin/i)
93
97
  if (RUBY_PLATFORM =~ /arm64/i)
94
- puts "Detected platform - MacOS darwin arm64"
95
- DOWNLOADLINK = "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/macarm64_odbc_cli.tar.gz"
98
+ puts "Detected platform - MacOS darwin arm64"
99
+ CLIFILENAME = 'macarm64_odbc_cli.tar.gz'
96
100
  elsif(RUBY_PLATFORM =~ /x86_64/i || is64Bit)
97
- puts "Detected platform - MacOS darwin x86_64"
98
- DOWNLOADLINK = "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/macos64_odbc_cli.tar.gz"
101
+ puts "Detected platform - MacOS darwin x86_64"
102
+ CLIFILENAME = 'macos64_odbc_cli.tar.gz'
99
103
  else
100
- puts "Mac OS 32 bit not supported. Please use an x64 architecture."
104
+ puts "Mac OS 32 bit not supported. Please use an x64 architecture."
101
105
  end
102
106
  elsif (RUBY_PLATFORM =~ /mswin/ || RUBY_PLATFORM =~ /mingw/)
103
107
  ZIP = true
104
108
  if(is64Bit)
105
109
  puts "Detected platform - windows 64"
106
- DOWNLOADLINK= "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/ntx64_odbc_cli.zip"
110
+ CLIFILENAME = 'ntx64_odbc_cli.zip'
107
111
  else
108
112
  puts "Detected platform - windows 32"
109
- DOWNLOADLINK= "https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/nt32_odbc_cli.zip"
113
+ CLIFILENAME = 'nt32_odbc_cli.zip'
110
114
  end
111
115
  end
112
116
 
117
+ if(!CLIFILENAME.nil? && !CLIFILENAME.empty?)
118
+ DOWNLOADLINK = "#{PRIMARY_CLIDRIVER_BASE_URL}#{CLIFILENAME}"
119
+ end
120
+
113
121
  def downloadCLIPackage(destination, link = nil)
114
122
  if(link.nil?)
115
- downloadLink = DOWNLOADLINK
123
+ cliFileName = CLIFILENAME
116
124
  else
117
- downloadLink = link
125
+ begin
126
+ cliFileName = File.basename(URI.parse(link).path)
127
+ rescue
128
+ cliFileName = nil
129
+ end
130
+ end
131
+
132
+ if(cliFileName.nil? || cliFileName.empty?)
133
+ raise 'Unable to determine clidriver package filename for download.'
134
+ end
135
+
136
+ primaryLink = "#{PRIMARY_CLIDRIVER_BASE_URL}#{cliFileName}"
137
+ if(!link.nil? && !link.empty?)
138
+ primaryLink = link
118
139
  end
119
140
 
120
141
  if ZIP
@@ -122,8 +143,29 @@ def downloadCLIPackage(destination, link = nil)
122
143
  else
123
144
  filename = "#{destination}/clidriver.tar.gz"
124
145
  end
125
-
126
- Down.download(downloadLink, destination: filename, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE)
146
+
147
+ fallbackLink = "#{FALLBACK_CLIDRIVER_BASE_URL}#{cliFileName}"
148
+
149
+ downloadUrls = [primaryLink]
150
+ if !fallbackLink.nil? && fallbackLink != primaryLink
151
+ downloadUrls << fallbackLink
152
+ end
153
+
154
+ lastError = nil
155
+ downloadUrls.each_with_index do |url, index|
156
+ begin
157
+ puts "Downloading DSDriver from URL: #{url}"
158
+ Down.download(url, destination: filename, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE)
159
+ return filename
160
+ rescue => e
161
+ lastError = e
162
+ if index < downloadUrls.length - 1
163
+ puts "Download failed from primary URL. Retrying with fallback mirror..."
164
+ end
165
+ end
166
+ end
167
+
168
+ raise "Failed to download DSDriver from all configured URLs. Last error: #{lastError}"
127
169
 
128
170
  filename
129
171
  end
@@ -132,10 +174,21 @@ def extract_zip(file, destination)
132
174
  FileUtils.mkdir_p(destination)
133
175
 
134
176
  Zip::File.open(file) do |zip_file|
135
- zip_file.each do |f|
136
- fpath = File.join(destination, f.name)
137
- FileUtils.mkdir_p(File.dirname(fpath))
138
- zip_file.extract(f, fpath) unless File.exist?(fpath)
177
+ zip_file.each do |entry|
178
+ fpath = File.join(destination, entry.name)
179
+
180
+ if entry.directory?
181
+ FileUtils.mkdir_p(fpath)
182
+ else
183
+ FileUtils.mkdir_p(File.dirname(fpath))
184
+ next if File.exist?(fpath)
185
+
186
+ entry.get_input_stream do |input|
187
+ File.open(fpath, 'wb') do |output|
188
+ IO.copy_stream(input, output)
189
+ end
190
+ end
191
+ end
139
192
  end
140
193
  end
141
194
  end
@@ -163,7 +216,7 @@ def untarCLIPackage(archive,destination)
163
216
  FileUtils.chmod entry.header.mode, file, :verbose => false
164
217
  elsif entry.header.typeflag == '2' #Symlink!
165
218
  if (RUBY_PLATFORM =~ /darwin/i) && (RUBY_PLATFORM =~ /arm64/i) && File.exist?(file)
166
- File.delete file if File.file? file
219
+ File.delete file if File.file? file
167
220
  end
168
221
  File.symlink entry.header.linkname, file
169
222
  end
@@ -174,33 +227,33 @@ end
174
227
  if(IBM_DB_HOME == nil || IBM_DB_HOME == '')
175
228
  IBM_DB_INCLUDE = ENV['IBM_DB_INCLUDE']
176
229
  IBM_DB_LIB = ENV['IBM_DB_LIB']
177
-
230
+
178
231
  if( ( (IBM_DB_INCLUDE.nil?) || (IBM_DB_LIB.nil?) ) ||
179
232
  ( IBM_DB_INCLUDE == '' || IBM_DB_LIB == '' )
180
- )
181
- if(!DOWNLOADLINK.nil? && !DOWNLOADLINK.empty?)
182
- puts "Environment variable IBM_DB_HOME is not set. Downloading and setting up the DB2 client driver\n"
183
- destination = "#{File.expand_path(File.dirname(File.dirname(__FILE__)))}/../lib"
184
-
185
- archive = downloadCLIPackage(destination)
186
- if (ZIP)
187
- extract_zip(archive, destination)
188
- else
189
- untarCLIPackage(archive,destination)
233
+ )
234
+ if(!DOWNLOADLINK.nil? && !DOWNLOADLINK.empty?)
235
+ puts "Environment variable IBM_DB_HOME is not set. Downloading and setting up the DB2 client driver\n"
236
+ destination = "#{File.expand_path(File.dirname(File.dirname(__FILE__)))}/../lib"
237
+
238
+ archive = downloadCLIPackage(destination)
239
+ if (ZIP)
240
+ extract_zip(archive, destination)
241
+ else
242
+ untarCLIPackage(archive,destination)
243
+ end
244
+
245
+ IBM_DB_HOME="#{destination}/clidriver"
246
+
247
+ IBM_DB_INCLUDE = "#{IBM_DB_HOME}/include"
248
+ IBM_DB_LIB="#{IBM_DB_HOME}/lib"
249
+ else
250
+ puts "Environment variable IBM_DB_HOME is not set. Set it to your DB2/IBM_Data_Server_Driver installation directory and retry gem install.\n "
251
+ exit 1
190
252
  end
191
-
192
- IBM_DB_HOME="#{destination}/clidriver"
193
-
194
- IBM_DB_INCLUDE = "#{IBM_DB_HOME}/include"
195
- IBM_DB_LIB="#{IBM_DB_HOME}/lib"
196
- else
197
- puts "Environment variable IBM_DB_HOME is not set. Set it to your DB2/IBM_Data_Server_Driver installation directory and retry gem install.\n "
198
- exit 1
199
- end
200
253
  end
201
254
  else
202
255
  IBM_DB_INCLUDE = "#{IBM_DB_HOME}/include"
203
-
256
+
204
257
  if(is64Bit)
205
258
  IBM_DB_LIB="#{IBM_DB_HOME}/lib64"
206
259
  else
@@ -212,17 +265,17 @@ if( !(File.directory?(IBM_DB_LIB)) )
212
265
  suppress_warnings{IBM_DB_LIB = "#{IBM_DB_HOME}/lib"}
213
266
  if( !(File.directory?(IBM_DB_LIB)) )
214
267
  puts "Cannot find #{IBM_DB_LIB} directory. Check if you have set the IBM_DB_HOME environment variable's value correctly\n "
215
- exit 1
268
+ exit 1
216
269
  end
217
270
  notifyString = "Detected usage of IBM Data Server Driver package. Ensure you have downloaded "
218
-
271
+
219
272
  if(is64Bit)
220
273
  notifyString = notifyString + "64-bit package "
221
274
  else
222
275
  notifyString = notifyString + "32-bit package "
223
276
  end
224
277
  notifyString = notifyString + "of IBM_Data_Server_Driver and retry the 'gem install ibm_db' command\n "
225
-
278
+
226
279
  puts notifyString
227
280
  end
228
281
 
@@ -240,78 +293,91 @@ def crash(str)
240
293
  exit 1
241
294
  end
242
295
 
243
- if( RUBY_VERSION =~ /1.9/ || RUBY_VERSION =~ /2./ || RUBY_VERSION =~ /3./)
296
+ if( RUBY_VERSION =~ /1.9/ || RUBY_VERSION =~ /2./ || RUBY_VERSION =~ /3./ || RUBY_VERSION =~ /4./)
244
297
  create_header('gil_release_version.h')
245
298
  create_header('unicode_support_version.h')
246
299
  end
247
300
 
248
- unless (have_library(WIN ? 'db2cli' : 'db2','SQLConnect') or find_library(WIN ? 'db2cli' : 'db2','SQLConnect', IBM_DB_LIB))
301
+ lib_found =
302
+ if WIN
303
+ have_library('db2cli64', 'SQLConnect') ||
304
+ find_library('db2cli64', 'SQLConnect', IBM_DB_LIB) ||
305
+ have_library('db2app64', 'SQLConnect') ||
306
+ find_library('db2app64', 'SQLConnect', IBM_DB_LIB) ||
307
+ have_library('db2cli', 'SQLConnect') ||
308
+ find_library('db2cli', 'SQLConnect', IBM_DB_LIB)
309
+ else
310
+ have_library('db2', 'SQLConnect') ||
311
+ find_library('db2', 'SQLConnect', IBM_DB_LIB)
312
+ end
313
+
314
+ unless lib_found
249
315
  crash(<<EOL)
250
- Unable to locate libdb2.so/a under #{IBM_DB_LIB}
316
+ Unable to locate DB2 CLI library under #{IBM_DB_LIB}
251
317
 
252
318
  Follow the steps below and retry
253
319
 
254
320
  Step 1: - Install IBM DB2 Universal Database Server/Client
255
321
 
256
322
  step 2: - Set the environment variable IBM_DB_HOME as below
257
-
323
+
258
324
  (assuming bash shell)
259
-
325
+
260
326
  export IBM_DB_HOME=<DB2/IBM_Data_Server_Driver installation directory> #(Eg: export IBM_DB_HOME=/opt/ibm/db2/v10)
261
327
 
262
328
  step 3: - Retry gem install
263
-
329
+
264
330
  EOL
265
331
  end
266
332
 
267
- if(RUBY_VERSION =~ /2./ || RUBY_VERSION =~ /3./)
268
- require 'rbconfig'
333
+ if(RUBY_VERSION =~ /2./ || RUBY_VERSION =~ /3./ || RUBY_VERSION =~ /4./)
334
+ require 'rbconfig'
269
335
  end
270
336
 
271
337
  alias :libpathflag0 :libpathflag
272
338
  def libpathflag(libpath)
273
- if(RUBY_PLATFORM =~ /darwin/i)
274
- if(RUBY_VERSION =~ /2./ || RUBY_VERSION =~ /3./)
275
- libpathflag0 + case RbConfig::CONFIG["arch"]
276
- when /solaris2/
277
- libpath[0..-2].map {|path| " -R#{path}"}.join
278
- when /linux/
279
- libpath[0..-2].map {|path| " -R#{path} "}.join
280
- else
281
- ""
282
- end
283
- else
284
- libpathflag0 + case Config::CONFIG["arch"]
285
- when /solaris2/
286
- libpath[0..-2].map {|path| " -R#{path}"}.join
287
- when /linux/
288
- libpath[0..-2].map {|path| " -R#{path} "}.join
289
- else
290
- ""
291
- end
292
- end
293
- else
294
- if(RUBY_VERSION =~ /2./ || RUBY_VERSION =~ /3./)
295
- ldflags = case RbConfig::CONFIG["arch"]
296
- when /solaris2/
297
- libpath[0..-2].map {|path| " -R#{path}"}.join
298
- when /linux/
299
- libpath[0..-2].map {|path| " -R#{path} "}.join
300
- else
301
- ""
302
- end
303
- else
304
- ldflags = case Config::CONFIG["arch"]
305
- when /solaris2/
306
- libpath[0..-2].map {|path| " -R#{path}"}.join
307
- when /linux/
308
- libpath[0..-2].map {|path| " -R#{path} "}.join
309
- else
310
- ""
311
- end
312
- end
313
- libpathflag0 + " '-Wl,-R$$ORIGIN/clidriver/lib' "
314
- end
339
+ if(RUBY_PLATFORM =~ /darwin/i)
340
+ if(RUBY_VERSION =~ /2./ || RUBY_VERSION =~ /3./ || RUBY_VERSION =~ /4./)
341
+ libpathflag0 + case RbConfig::CONFIG["arch"]
342
+ when /solaris2/
343
+ libpath[0..-2].map {|path| " -R#{path}"}.join
344
+ when /linux/
345
+ libpath[0..-2].map {|path| " -R#{path} "}.join
346
+ else
347
+ ""
348
+ end
349
+ else
350
+ libpathflag0 + case Config::CONFIG["arch"]
351
+ when /solaris2/
352
+ libpath[0..-2].map {|path| " -R#{path}"}.join
353
+ when /linux/
354
+ libpath[0..-2].map {|path| " -R#{path} "}.join
355
+ else
356
+ ""
357
+ end
358
+ end
359
+ else
360
+ if(RUBY_VERSION =~ /2./ || RUBY_VERSION =~ /3./ || RUBY_VERSION =~ /4./)
361
+ ldflags = case RbConfig::CONFIG["arch"]
362
+ when /solaris2/
363
+ libpath[0..-2].map {|path| " -R#{path}"}.join
364
+ when /linux/
365
+ libpath[0..-2].map {|path| " -R#{path} "}.join
366
+ else
367
+ ""
368
+ end
369
+ else
370
+ ldflags = case Config::CONFIG["arch"]
371
+ when /solaris2/
372
+ libpath[0..-2].map {|path| " -R#{path}"}.join
373
+ when /linux/
374
+ libpath[0..-2].map {|path| " -R#{path} "}.join
375
+ else
376
+ ""
377
+ end
378
+ end
379
+ libpathflag0 + " '-Wl,-R$$ORIGIN/clidriver/lib' "
380
+ end
315
381
  end
316
382
 
317
383
  have_header('gil_release_version.h')
data/ext/ibm_db.bundle CHANGED
Binary file
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>English</string>
7
+ <key>CFBundleIdentifier</key>
8
+ <string>com.apple.xcode.dsym.ibm_db.bundle</string>
9
+ <key>CFBundleInfoDictionaryVersion</key>
10
+ <string>6.0</string>
11
+ <key>CFBundlePackageType</key>
12
+ <string>dSYM</string>
13
+ <key>CFBundleSignature</key>
14
+ <string>????</string>
15
+ <key>CFBundleShortVersionString</key>
16
+ <string>1.0</string>
17
+ <key>CFBundleVersion</key>
18
+ <string>1</string>
19
+ </dict>
20
+ </plist>
@@ -0,0 +1,5 @@
1
+ ---
2
+ triple: 'arm64-apple-darwin'
3
+ binary-path: ibm_db.bundle
4
+ relocations: []
5
+ ...
data/ext/ibm_db.c CHANGED
@@ -27,6 +27,10 @@
27
27
  #include "ruby_ibm_db_cli.h"
28
28
  #include "ruby_ibm_db.h"
29
29
  #include <ctype.h>
30
+ #ifdef _AIX
31
+ #include <signal.h>
32
+ #include <unistd.h>
33
+ #endif
30
34
 
31
35
  #include <ruby/thread.h>
32
36
  #include <ruby/version.h>
@@ -47,6 +51,51 @@ static char *_ruby_ibm_db_instance_name;
47
51
  static int is_systemi, is_informix; /* 1 == TRUE; 0 == FALSE; */
48
52
  static int createDbSupported, dropDbSupported; /*1 == TRUE; 0 == FALSE*/
49
53
 
54
+ #ifdef _AIX
55
+ /*
56
+ C-only AIX fallback for GSKit v9.x SSL failures.
57
+
58
+ On AIX, GSKit v9.x can abort the process from an internal thread when SSL
59
+ handshake fails. In the Ruby driver we cannot install a C++ terminate
60
+ handler from a traditional .c extension file without changing the long-
61
+ standing build model. Instead, install a SIGABRT handler in pure C so the
62
+ process exits cleanly with a clear diagnostic instead of generating a core
63
+ dump.
64
+ */
65
+ static void _ruby_ibm_db_aix_sigabrt_handler(int sig)
66
+ {
67
+ (void)sig;
68
+
69
+ #define WR(msg) write(STDERR_FILENO, msg, sizeof(msg) - 1)
70
+
71
+ WR("\n");
72
+ WR("[ibm_db] ERROR: SIGABRT received - GSKit v9.x SSL connection failed.\n");
73
+ WR("\n");
74
+ WR("[ibm_db] This is a known incompatibility between GSKit v9.x (compiled with IBM XLC)\n");
75
+ WR("[ibm_db] and GCC-compiled runtimes/extensions on AIX, including the ibm_db Ruby gem.\n");
76
+ WR("[ibm_db] GSKit v9 throws C++ exceptions from internal threads using XLC's exception\n");
77
+ WR("[ibm_db] handling ABI, which is incompatible with GCC's libstdc++ runtime.\n");
78
+ WR("\n");
79
+ WR("[ibm_db] SOLUTION: Use a Db2 CLI driver (clidriver) that includes GSKit v8.x\n");
80
+ WR("[ibm_db] instead of GSKit v9.x. GSKit v8.x does not have this incompatibility.\n");
81
+ WR("\n");
82
+ WR("[ibm_db] Db2 client from version 12.1.5.0 onwards ships with GSKit v9.x.\n");
83
+ WR("[ibm_db] Use a clidriver older than v12.1.5.0 to avoid this issue.\n");
84
+ WR("\n");
85
+ WR("[ibm_db] To check your GSKit version:\n");
86
+ WR("[ibm_db] ls $IBM_DB_HOME/lib/icc/libgsk*.so\n");
87
+ WR("[ibm_db] - libgsk8*.so = GSKit v8 (compatible)\n");
88
+ WR("[ibm_db] - libgsk9*.so = GSKit v9 (incompatible)\n");
89
+ WR("\n");
90
+ WR("[ibm_db] Exiting without core dump.\n");
91
+ WR("\n");
92
+
93
+ #undef WR
94
+
95
+ _exit(1);
96
+ }
97
+ #endif
98
+
50
99
  /* Strucure holding the necessary data to be passed to bind the list of elements passed to the execute function*/
51
100
  typedef struct _stmt_bind_data_array {
52
101
  VALUE *parameters_array;
@@ -197,6 +246,17 @@ static VALUE id_id2name;
197
246
  /* Every user visible function must have an entry in Init_ibm_db
198
247
  */
199
248
  void Init_ibm_db(void) {
249
+
250
+ #ifdef _AIX
251
+ {
252
+ struct sigaction sa_abrt;
253
+ memset(&sa_abrt, '\0', sizeof(sa_abrt));
254
+ sa_abrt.sa_handler = _ruby_ibm_db_aix_sigabrt_handler;
255
+ sigemptyset(&sa_abrt.sa_mask);
256
+ sa_abrt.sa_flags = 0;
257
+ sigaction(SIGABRT, &sa_abrt, NULL);
258
+ }
259
+ #endif
200
260
 
201
261
  mDB = rb_define_module("IBM_DB");
202
262
 
data/ext/ibm_db.o CHANGED
Binary file