Guest User

Untitled

a guest
Dec 24th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.23 KB | None | 0 0
  1. diff --git a/lib/sequel/adapters/informix.rb b/lib/sequel/adapters/informix.rb
  2. index d90fcbf..f727954 100644
  3. --- a/lib/sequel/adapters/informix.rb
  4. +++ b/lib/sequel/adapters/informix.rb
  5. @@ -1,12 +1,13 @@
  6. require 'informix'
  7. +Sequel.require 'adapters/shared/informix'
  8.  
  9. module Sequel
  10. module Informix
  11. class Database < Sequel::Database
  12. + include DatabaseMethods
  13. +
  14. set_adapter_scheme :informix
  15.  
  16. - TEMPORARY = 'TEMP '.freeze
  17. -
  18. def connect(server)
  19. opts = server_opts(server)
  20. ::Informix.connect(opts[:database], opts[:user], opts[:password])
  21. @@ -35,7 +36,7 @@ module Sequel
  22. end
  23.  
  24. class Dataset < Sequel::Dataset
  25. - SELECT_CLAUSE_METHODS = clause_methods(:select, %w'limit distinct columns from join where having group compounds order')
  26. + include DatasetMethods
  27.  
  28. def fetch_rows(sql)
  29. execute(sql) do |cursor|
  30. @@ -56,22 +57,6 @@ module Sequel
  31. end
  32. self
  33. end
  34. -
  35. - private
  36. -
  37. - # Informix does not support INTERSECT or EXCEPT
  38. - def supports_intersect_except?
  39. - false
  40. - end
  41. -
  42. - def select_clause_methods
  43. - SELECT_CLAUSE_METHODS
  44. - end
  45. -
  46. - def select_limit_sql(sql)
  47. - sql << " SKIP #{@opts[:offset]}" if @opts[:offset]
  48. - sql << " FIRST #{@opts[:limit]}" if @opts[:limit]
  49. - end
  50. end
  51. end
  52. end
  53. diff --git a/lib/sequel/adapters/jdbc.rb b/lib/sequel/adapters/jdbc.rb
  54. index d82547c..79344a2 100644
  55. --- a/lib/sequel/adapters/jdbc.rb
  56. +++ b/lib/sequel/adapters/jdbc.rb
  57. @@ -75,6 +75,11 @@ module Sequel
  58. Sequel.ts_require 'adapters/jdbc/as400'
  59. db.extend(Sequel::JDBC::AS400::DatabaseMethods)
  60. com.ibm.as400.access.AS400JDBCDriver
  61. + end,
  62. + :"informix-sqli"=>proc do |db|
  63. + Sequel.ts_require 'adapters/jdbc/informix'
  64. + db.extend(Sequel::JDBC::Informix::DatabaseMethods)
  65. + com.informix.jdbc.IfxDriver
  66. end
  67. }
  68.  
  69. diff --git a/lib/sequel/adapters/jdbc/informix.rb b/lib/sequel/adapters/jdbc/informix.rb
  70. new file mode 100644
  71. index 0000000..e0020ba
  72. --- /dev/null
  73. +++ b/lib/sequel/adapters/jdbc/informix.rb
  74. @@ -0,0 +1,31 @@
  75. +Sequel.require 'adapters/shared/informix'
  76. +
  77. +module Sequel
  78. + module JDBC
  79. + # Database and Dataset instance methods for Informix specific
  80. + # support via JDBC.
  81. + module Informix
  82. + # Database instance methods for Informix databases accessed via JDBC.
  83. + module DatabaseMethods
  84. + include Sequel::Informix::DatabaseMethods
  85. +
  86. + # Return instance of Sequel::JDBC::MSSQL::Dataset with the given opts.
  87. + def dataset(opts=nil)
  88. + Sequel::JDBC::Informix::Dataset.new(self, opts)
  89. + end
  90. +
  91. + private
  92. +
  93. + # TODO: implement
  94. + def last_insert_id(conn, opts={})
  95. + nil
  96. + end
  97. + end
  98. +
  99. + # Dataset class for MSSQL datasets accessed via JDBC.
  100. + class Dataset < JDBC::Dataset
  101. + include Sequel::Informix::DatasetMethods
  102. + end
  103. + end
  104. + end
  105. +end
  106. diff --git a/lib/sequel/adapters/shared/informix.rb b/lib/sequel/adapters/shared/informix.rb
  107. new file mode 100644
  108. index 0000000..04bc190
  109. --- /dev/null
  110. +++ b/lib/sequel/adapters/shared/informix.rb
  111. @@ -0,0 +1,41 @@
  112. +require 'informix'
  113. +
  114. +module Sequel
  115. + module Informix
  116. + module DatabaseMethods
  117. + TEMPORARY = 'TEMP '.freeze
  118. +
  119. + # Informix uses the :informix database type
  120. + def database_type
  121. + :informix
  122. + end
  123. +
  124. + private
  125. +
  126. + # SQL fragment for showing a table is temporary
  127. + def temporary_table_sql
  128. + TEMPORARY
  129. + end
  130. + end
  131. +
  132. + module DatasetMethods
  133. + SELECT_CLAUSE_METHODS = Dataset.clause_methods(:select, %w'limit distinct columns from join where having group compounds order')
  134. +
  135. + private
  136. +
  137. + # Informix does not support INTERSECT or EXCEPT
  138. + def supports_intersect_except?
  139. + false
  140. + end
  141. +
  142. + def select_clause_methods
  143. + SELECT_CLAUSE_METHODS
  144. + end
  145. +
  146. + def select_limit_sql(sql)
  147. + sql << " SKIP #{@opts[:offset]}" if @opts[:offset]
  148. + sql << " FIRST #{@opts[:limit]}" if @opts[:limit]
  149. + end
  150. + end
  151. + end
  152. +end
Add Comment
Please, Sign In to add comment