1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# +-----------------------------------------------------------------------+
# | |
# | Copyright (c) 2010 IBM Corporation |
# | |
# | Permission is hereby granted, free of charge, to any person obtaining |
# | a copy of this software and associated documentation files (the |
# | "Software"), to deal in the Software without restriction, including |
# | without limitation the rights to use, copy, modify, merge, publish, |
# | distribute, sublicense, and/or sell copies of the Software, and to |
# | permit persons to whom the Software is furnished to do so, subject to |
# | the following conditions: |
# | |
# | The above copyright notice and this permission notice shall be |
# | included in all copies or substantial portions of the Software. |
# | |
# | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
# | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
# | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.|
# | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR |
# | ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
# | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
# | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
# | |
# +-----------------------------------------------------------------------+
#
# Author: Praveen Devarao <praveendrl@in.ibm.com>
#
module Arel
module SqlCompiler
class IBM_DBCompiler < GenericCompiler
def limited_update_conditions(conditions, taken)
quoted_primary_key = engine.quote_table_name(primary_key)
update_conditions = "WHERE #{quoted_primary_key} IN (SELECT #{quoted_primary_key} FROM #{engine.connection.quote_table_name table.name} #{conditions} " #Note: - ')' not added, limit segment is to be appended
engine.add_limit_offset!(update_conditions,{:limit=>taken,:offset=>nil})
update_conditions << ")" # Close the sql segment
update_conditions
end
def add_limit_on_delete(taken)
raise "IBM_DB does not support limit on deletion" # Limiting the number of rows to be deleted is not supported by IBM_DB
end
end
end
end
|