ibruby 0.5.5-i686-darwin8.9.1

Sign up to get free protection for your applications and to get access to all the features.
data/test/KeyTest.rb ADDED
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'TestSetup'
4
+ require 'test/unit'
5
+ #require 'rubygems'
6
+ require 'ibruby'
7
+
8
+ include IBRuby
9
+
10
+ class KeyTest < Test::Unit::TestCase
11
+ CURDIR = "#{Dir.getwd}"
12
+ DB_FILE = "#{CURDIR}#{File::SEPARATOR}key_unit_test.ib"
13
+
14
+ def setup
15
+ puts "#{self.class.name} started." if TEST_LOGGING
16
+ if File::exist?(DB_FILE)
17
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
18
+ end
19
+
20
+ # Switch to the old way of keying.
21
+ $IBRubySettings[:ALIAS_KEYS] = false
22
+
23
+ database = Database::create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
24
+ @connection = database.connect(DB_USER_NAME, DB_PASSWORD)
25
+ @transaction = @connection.start_transaction
26
+ @results = ResultSet.new(@connection, @transaction,
27
+ 'SELECT * FROM RDB$FIELDS', 3, nil)
28
+ @empty = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
29
+ 0, 0, 0, 0, 0, 0, 0, 0, 0]
30
+
31
+ @connection.execute_immediate('create table keytest (COL01 integer, '\
32
+ 'COL02 varchar(10), COL03 integer)')
33
+ @connection.execute_immediate("insert into keytest values (1, 'Two', 3)")
34
+ end
35
+
36
+ def teardown
37
+ @results.close
38
+ @transaction.rollback
39
+ @connection.close
40
+ if File::exist?(DB_FILE)
41
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
42
+ end
43
+ $IBRubySettings[:ALIAS_KEYS] = true
44
+ puts "#{self.class.name} finished." if TEST_LOGGING
45
+ end
46
+
47
+ def test_01
48
+ sql = 'select COL01 one, COL02 two, COL03 three from keytest'
49
+ rows = @connection.execute_immediate(sql)
50
+ data = rows.fetch
51
+
52
+ count = 0
53
+ data.each do |name, value|
54
+ assert(['COL01', 'COL02', 'COL03'].include?(name))
55
+ assert([1, 'Two', 3].include?(value))
56
+ count += 1
57
+ end
58
+ assert(count == 3)
59
+
60
+ count = 0
61
+ data.each_key do |name|
62
+ assert(['COL01', 'COL02', 'COL03'].include?(name))
63
+ count += 1
64
+ end
65
+ assert(count == 3)
66
+
67
+ count = 0
68
+ data.each_value do |value|
69
+ assert([1, 'Two', 3].include?(value))
70
+ count += 1
71
+ end
72
+ assert(count == 3)
73
+
74
+ assert(data.fetch('COL02') == 'Two')
75
+ assert(data.fetch('COL04', 'LALALA') == 'LALALA')
76
+ assert(data.fetch('COL00') {'NOT FOUND'} == 'NOT FOUND')
77
+ begin
78
+ data.fetch('COL05')
79
+ assert(false, 'Row#fetch succeeded for non-existent column name.')
80
+ rescue IndexError
81
+ end
82
+
83
+ assert(data.has_key?('COL01'))
84
+ assert(data.has_key?('COL10') == false)
85
+
86
+ assert(data.has_column?('COL02'))
87
+ assert(data.has_column?('COL22') == false)
88
+
89
+ assert(data.has_alias?('TWO'))
90
+ assert(data.has_alias?('FOUR') == false)
91
+
92
+ assert(data.has_value?(3))
93
+ assert(data.has_value?('LALALA') == false)
94
+
95
+ assert(data.keys.size == 3)
96
+ data.keys.each do |name|
97
+ assert(['COL01', 'COL02', 'COL03'].include?(name))
98
+ end
99
+
100
+ assert(data.names.size == 3)
101
+ data.names.each do |name|
102
+ assert(['COL01', 'COL02', 'COL03'].include?(name))
103
+ end
104
+
105
+ assert(data.aliases.size == 3)
106
+ data.aliases.each do |name|
107
+ assert(['ONE', 'TWO', 'THREE'].include?(name))
108
+ end
109
+
110
+ assert(data.values.size == 3)
111
+ data.values.each do |value|
112
+ assert([1, 'Two', 3].include?(value))
113
+ end
114
+
115
+ array = data.select {|name, value| name == 'COL02'}
116
+ assert(array.size == 1)
117
+ assert(array[0][0] == 'COL02')
118
+ assert(array[0][1] == 'Two')
119
+
120
+ array = data.to_a
121
+ assert(array.size == 3)
122
+ assert(array.include?(['COL01', 1]))
123
+ assert(array.include?(['COL02', 'Two']))
124
+ assert(array.include?(['COL03', 3]))
125
+
126
+ hash = data.to_hash
127
+ assert(hash.length == 3)
128
+ assert(hash['COL01'] == 1)
129
+ assert(hash['COL02'] == 'Two')
130
+ assert(hash['COL03'] == 3)
131
+
132
+ array = data.values_at('COL10', 'COL02', 'COL03')
133
+ assert(array.size == 3)
134
+ assert(array.include?('Two'))
135
+ assert(array.include?(3))
136
+ assert(array.include?(nil))
137
+
138
+ rows.close
139
+ end
140
+ end
@@ -0,0 +1,17 @@
1
+ ***************
2
+ *** 9,15 ****
3
+
4
+ class KeyTest < Test::Unit::TestCase
5
+ CURDIR = "#{Dir.getwd}"
6
+ - DB_FILE = "#{CURDIR}#{File::SEPARATOR}key_unit_test.fdb"
7
+
8
+ def setup
9
+ puts "#{self.class.name} started." if TEST_LOGGING
10
+ --- 9,15 ----
11
+
12
+ class KeyTest < Test::Unit::TestCase
13
+ CURDIR = "#{Dir.getwd}"
14
+ + DB_FILE = "#{CURDIR}#{File::SEPARATOR}key_unit_test.ib"
15
+
16
+ def setup
17
+ puts "#{self.class.name} started." if TEST_LOGGING
data/test/MetaTest.rb ADDED
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'TestSetup'
4
+ require 'test/unit'
5
+ #require 'rubygems'
6
+ require 'ibruby'
7
+
8
+ include IBRuby
9
+
10
+ class MetaTest < Test::Unit::TestCase
11
+ CURDIR = "#{Dir.getwd}"
12
+ DB_FILE = "#{CURDIR}#{File::SEPARATOR}meta_unit_test.ib"
13
+
14
+ def setup
15
+ puts "#{self.class.name} started." if TEST_LOGGING
16
+ if File::exist?(DB_FILE)
17
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
18
+ end
19
+
20
+ @database = Database.create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
21
+ @connection = @database.connect(DB_USER_NAME, DB_PASSWORD)
22
+
23
+ @creation_sql = "create table mtest (id integer not null, "\
24
+ "bool1 boolean default false, bool2 boolean, bool3 boolean default true, bool4 boolean default true not null,"\
25
+ " blob1 blob sub_type 1 not null, blob2 blob sub_type 1, blob3 blob sub_type 0,"\
26
+ " char1 char(10) default 'fred', char2 char(10) default 'fred' not null, char3 char(10), char4 char(20) default 'wil''ma',"\
27
+ " date1 date default current_date, date2 date not null, date3 date default current_date not null,"\
28
+ " decimal1 decimal(18,5) default 1.345, decimal2 decimal(15,5) default 20.22 not null, decimal3 decimal(12,6) not null"\
29
+ ")"
30
+ #puts sql
31
+ @connection.execute_immediate( @creation_sql );
32
+ @connection.execute_immediate( "create table pk_table(id integer not null primary key)" )
33
+ @connection.execute_immediate( "create table fk_table(id integer not null primary key, "\
34
+ "fk_id integer references pk_table(id))" )
35
+ @pk_sql = "alter table mtest "
36
+
37
+ end
38
+
39
+
40
+ def teardown
41
+ @connection.close
42
+
43
+ if File::exist?(DB_FILE)
44
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
45
+ end
46
+ puts "#{self.class.name} finished." if TEST_LOGGING
47
+ end
48
+
49
+ def test01
50
+ table = InterBaseTable.new('mtest')
51
+ assert_nothing_thrown( "failed to load table mtest" ) { table.load(@connection) }
52
+ sql = []
53
+ assert_nothing_thrown( "unable to build sql!" ) { sql = table.to_sql }
54
+ assert_not_nil sql, "sql returned nil for create table"
55
+ assert_equal sql.size > 0, true, "sql returned has nothing in it for table creation!"
56
+ #assert_equal @creation_sql.upcase, sql[0].upcase
57
+ #they ARE the same, but shows false and don't know why
58
+ puts sql
59
+ end
60
+
61
+ def test02
62
+ col = InterBaseMetaFunctions.table_fields( @connection, "mtest", true, "decimal2" )
63
+ new_col = col.dup
64
+ new_col.precision = 16
65
+ new_col.scale = 2
66
+ col.change_column(@connection,new_col)
67
+ new_col = InterBaseMetaFunctions.table_fields( @connection, "mtest", true, "decimal2" )
68
+
69
+ assert_equal false, new_col == col, "column decimal2 not changed"
70
+ assert_equal new_col.precision, 16, "column decimal2 precision not 16!"
71
+ assert_equal new_col.scale, 2, "column scale should be 2!"
72
+ end
73
+
74
+ def test03
75
+ col = InterBaseMetaFunctions.table_fields( @connection, "mtest", true, "decimal2" )
76
+ col.rename_column( @connection, "decimal_rename" )
77
+ ren_col = InterBaseMetaFunctions.table_fields( @connection, "mtest", true, "decimal2" )
78
+ assert_equal nil, ren_col, "column not renamed!"
79
+ new_col = InterBaseMetaFunctions.table_fields( @connection, "mtest", true, "decimal_rename" )
80
+ assert_equal new_col, col, "column types not identical after rename"
81
+ new_col.rename_column( @connection, "decimal2" )
82
+ end
83
+
84
+ def test04
85
+ table = InterBaseTable.new('fk_table')
86
+ table.load(@connection)
87
+ assert_nothing_thrown( "unable build sql for table fk_table! " ) do
88
+ table.to_sql.each() {|sql| puts "table creation sql: #{sql}" }
89
+ end
90
+ assert_nothing_thrown( "unable to rename table" ) do
91
+ table.rename_table( @connection, 'new_fk_table' )
92
+ end
93
+ table = InterBaseTable.new('new_fk_table')
94
+ table.load(@connection)
95
+ assert_nothing_thrown( "unable build sql for table fk_table! " ) do
96
+ table.to_sql.each() {|sql| puts "table creation sql: #{sql}" }
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,164 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'TestSetup'
4
+ require 'test/unit'
5
+ #require 'rubygems'
6
+ require 'ibruby'
7
+
8
+ include IBRuby
9
+
10
+ class ResultSetTest < Test::Unit::TestCase
11
+ CURDIR = "#{Dir.getwd}"
12
+ DB_FILE = "#{CURDIR}#{File::SEPARATOR}result_set_unit_test.ib"
13
+
14
+ def setup
15
+ puts "#{self.class.name} started." if TEST_LOGGING
16
+ if File::exist?(DB_FILE)
17
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
18
+ end
19
+ @database = Database::create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
20
+ @connections = []
21
+ @transactions = []
22
+
23
+ @connections.push(@database.connect(DB_USER_NAME, DB_PASSWORD))
24
+
25
+ @connections[0].start_transaction do |tx|
26
+ tx.execute("CREATE TABLE TEST_TABLE (TESTID INTEGER NOT NULL "\
27
+ "primary KEY, TESTINFO VARCHAR(100))")
28
+ tx.execute('create table all_types (col01 boolean, col02 blob, '\
29
+ 'col03 char(100), col04 date, col05 decimal(5,2), '\
30
+ 'col06 double precision, col07 float, col08 integer, '\
31
+ 'col09 numeric(10,3), col10 smallint, col11 time, '\
32
+ 'col12 timestamp, col13 varchar(23))')
33
+ end
34
+
35
+ @connections[0].start_transaction do |tx|
36
+ begin
37
+ tx.execute("INSERT INTO TEST_TABLE VALUES (10, 'Record One.')")
38
+ tx.execute("INSERT INTO TEST_TABLE VALUES (20, 'Record Two.')")
39
+ tx.execute("INSERT INTO TEST_TABLE VALUES (30, 'Record Three.')")
40
+ tx.execute("INSERT INTO TEST_TABLE VALUES (40, 'Record Four.')")
41
+ tx.execute("INSERT INTO TEST_TABLE VALUES (50, 'Record Five.')")
42
+ rescue Exception => error
43
+ puts error.message
44
+ error.backtrace.each {|step| puts " #{step}"}
45
+ raise
46
+ end
47
+ end
48
+
49
+ @transactions.push(@connections[0].start_transaction)
50
+ end
51
+
52
+ def teardown
53
+ @transactions.each do |tx|
54
+ tx.rollback if tx.active?
55
+ end
56
+ @transactions.clear
57
+ @connections.each do |cxn|
58
+ cxn.close if cxn.open?
59
+ end
60
+ @connections.clear
61
+ if File::exist?(DB_FILE)
62
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
63
+ end
64
+ puts "#{self.class.name} finished." if TEST_LOGGING
65
+ end
66
+
67
+ def test01
68
+ r = ResultSet.new(@connections[0], @transactions[0],
69
+ "SELECT * FROM TEST_TABLE ORDER BY TESTID", 3, nil)
70
+
71
+ assert(r.connection == @connections[0])
72
+ assert(r.transaction == @transactions[0])
73
+ assert(r.sql == "SELECT * FROM TEST_TABLE ORDER BY TESTID")
74
+ assert(r.dialect == 3)
75
+
76
+ assert(r.fetch != nil)
77
+ assert(r.fetch.class == Row)
78
+ assert(r.fetch[0] == 30)
79
+ assert(r.fetch[1] == 'Record Four.')
80
+ r.fetch
81
+ assert(r.fetch == nil)
82
+ r.close
83
+
84
+ r = ResultSet.new(@connections[0], @transactions[0],
85
+ "SELECT * FROM TEST_TABLE ORDER BY TESTID", 3, nil)
86
+ assert(r.column_count == 2)
87
+ assert(r.column_name(0) == 'TESTID')
88
+ assert(r.column_name(1) == 'TESTINFO')
89
+ assert(r.column_name(3) == nil)
90
+ assert(r.column_name(-1) == nil)
91
+ assert(r.column_table(0) == 'TEST_TABLE')
92
+ assert(r.column_table(1) == 'TEST_TABLE')
93
+ assert(r.column_table(2) == nil)
94
+ assert(r.column_table(-1) == nil)
95
+ assert(r.column_alias(0) == 'TESTID')
96
+ assert(r.column_alias(1) == 'TESTINFO')
97
+ assert(r.column_alias(3) == nil)
98
+ assert(r.column_alias(-1) == nil)
99
+ r.close
100
+
101
+ r = ResultSet.new(@connections[0], @transactions[0],
102
+ "SELECT * FROM TEST_TABLE ORDER BY TESTID", 3, nil)
103
+ total = 0
104
+ r.each do |row|
105
+ total += 1
106
+ end
107
+ assert(total == 5)
108
+ assert(r.exhausted?)
109
+ end
110
+
111
+ def test02
112
+ r = ResultSet.new(@connections[0], @transactions[0],
113
+ 'select * from test_table where testid between ? and ?',
114
+ 3, [20, 40])
115
+ assert(r.exhausted? == false)
116
+ total = 0
117
+ r.each {|row| total += 1}
118
+ assert(total == 3)
119
+ assert(r.exhausted?)
120
+ end
121
+
122
+ def test03
123
+ begin
124
+ ResultSet.new(@connections[0], @transactions[0],
125
+ "insert into test_table values(?, ?)", 3,
126
+ [100, 'Should fail.'])
127
+ assert(false, "Created result set with non-query SQL statement.")
128
+ rescue IBRubyException
129
+ end
130
+
131
+ begin
132
+ ResultSet.new(@connections[0], @transactions[0],
133
+ "select * from test_table where testid = ?", 3,
134
+ [])
135
+ assert(false, 'Created result set with insufficient parameters.')
136
+ rescue IBRubyException
137
+ end
138
+ end
139
+
140
+ def test04
141
+ results = nil
142
+ begin
143
+ results = @transactions[0].execute('select * from all_types')
144
+
145
+ #assert(results.get_base_type(0) == SQLType::BIGINT)
146
+ puts "blob=#{results.get_base_type(0)}"
147
+ puts "blob=#{results.get_base_type(2)}"
148
+ assert(results.get_base_type(1) == SQLType::BLOB)
149
+ assert(results.get_base_type(2) == SQLType::CHAR)
150
+ assert(results.get_base_type(3) == SQLType::DATE)
151
+ assert(results.get_base_type(4) == SQLType::DECIMAL)
152
+ assert(results.get_base_type(5) == SQLType::DOUBLE)
153
+ assert(results.get_base_type(6) == SQLType::FLOAT)
154
+ assert(results.get_base_type(7) == SQLType::INTEGER)
155
+ assert(results.get_base_type(8) == SQLType::NUMERIC)
156
+ assert(results.get_base_type(9) == SQLType::SMALLINT)
157
+ assert(results.get_base_type(10) == SQLType::TIME)
158
+ assert(results.get_base_type(11) == SQLType::TIMESTAMP)
159
+ assert(results.get_base_type(12) == SQLType::VARCHAR)
160
+ ensure
161
+ results.close if results != nil
162
+ end
163
+ end
164
+ end
data/test/RoleTest.rb ADDED
@@ -0,0 +1,104 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'TestSetup'
4
+ require 'test/unit'
5
+ #require 'rubygems'
6
+ require 'ibruby'
7
+
8
+ include IBRuby
9
+
10
+ # This test case isn't working as I cannot get the basic operation of roles to work under ISQL so I am unsure
11
+ # how they are supposed to work.
12
+
13
+ class DatabaseTest < Test::Unit::TestCase
14
+ CURDIR = "#{Dir.getwd}"
15
+ DB_FILE = "#{CURDIR}#{File::SEPARATOR}role_unit_test.ib"
16
+
17
+ def setup
18
+ puts "#{self.class.name} started." if TEST_LOGGING
19
+ if File.exist?(DB_FILE)
20
+ db = Database.new(DB_FILE)
21
+ db.drop(DB_USER_NAME, DB_PASSWORD)
22
+ end
23
+
24
+ #connect "role_unit_test.ib" user "newuser" password "password" role sales;
25
+ #insert into sales_test values(1);
26
+ Database::create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
27
+ createUser
28
+ createRoleAndAllocate
29
+ end
30
+
31
+ def createUser
32
+ #create the user we will use to grant permission to
33
+ sm = ServiceManager.new('localhost')
34
+ sm.connect(DB_USER_NAME, DB_PASSWORD)
35
+
36
+ au = AddUser.new('newuser', 'password', 'first', 'middle', 'last')
37
+ au.execute(sm)
38
+ sm.disconnect
39
+ end
40
+
41
+ def createRoleAndAllocate
42
+ database = Database::new(DB_FILE)
43
+ @connection = database.connect(DB_USER_NAME, DB_PASSWORD)
44
+ @connection.execute_immediate( 'create role sales' )
45
+ @connection.execute_immediate( 'create table sales_test(sales_drone integer)' )
46
+ @connection.execute_immediate( 'grant insert on sales_test to sales' )
47
+ # no permission to this table (notsales)
48
+ @connection.execute_immediate( 'create table notsales(sales_drone integer)' )
49
+ # add 'newuser' into sales role
50
+ @connection.execute_immediate( 'grant sales to newuser' )
51
+ @connection.close
52
+ end
53
+
54
+ def dropRole
55
+ database = Database::new(DB_FILE)
56
+ @connection = database.connect(DB_USER_NAME, DB_PASSWORD)
57
+ @connection.execute_immediate( 'drop role sales' )
58
+ @connection.close
59
+ end
60
+
61
+ def dropUser
62
+ sm = ServiceManager.new('localhost')
63
+ sm.connect(DB_USER_NAME, DB_PASSWORD)
64
+
65
+ au = RemoveUser.new('newuser')
66
+ au.execute(sm)
67
+ sm.disconnect
68
+ end
69
+
70
+ def teardown
71
+ dropRole
72
+ dropUser
73
+
74
+ if File::exist?(DB_FILE)
75
+ db = Database.new(DB_FILE)
76
+ db.drop(DB_USER_NAME, DB_PASSWORD)
77
+ end
78
+ puts "#{self.class.name} finished." if TEST_LOGGING
79
+ end
80
+
81
+ #test we can connect with the role
82
+ def test02
83
+ database = Database::new(DB_FILE)
84
+ @connection = database.connect('newuser', 'password', Connection::ROLE => 'SALES' )
85
+ assert_nothing_raised() do
86
+
87
+ assert(@connection.execute_immediate( 'insert into sales_test values(1)' ) == 1 )
88
+
89
+ end
90
+ @connection.close
91
+ end
92
+
93
+ def test01
94
+ database = Database::new(DB_FILE)
95
+ @connection = database.connect('newuser', 'password' )
96
+ assert_raise(IBRuby::IBRubyException) do
97
+ @connection.execute_immediate( 'insert into sales_test values(10)' )
98
+
99
+ puts "No role passed but can insert into sales_test!" if TEST_LOGGING
100
+ end
101
+ @connection.close
102
+ end
103
+
104
+ end
@@ -0,0 +1,65 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'TestSetup'
4
+ require 'test/unit'
5
+ #require 'rubygems'
6
+ require 'ibruby'
7
+
8
+ include IBRuby
9
+
10
+ class RowCountTest < Test::Unit::TestCase
11
+ CURDIR = "#{Dir.getwd}"
12
+ DB_FILE = "#{CURDIR}#{File::SEPARATOR}row_count_test.ib"
13
+
14
+ def setup
15
+ puts "#{self.class.name} started." if TEST_LOGGING
16
+ # Create the database for use in testing.
17
+ if File.exist?(DB_FILE)
18
+ Database.new(DB_FILE).drop(DB_USER_NAME, DB_PASSWORD)
19
+ end
20
+ @database = Database.create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
21
+
22
+ # Create the test table.
23
+ @database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
24
+ cxn.execute_immediate('create table test(id integer)')
25
+ end
26
+ end
27
+
28
+
29
+ def teardown
30
+ if File.exist?(DB_FILE)
31
+ @database.drop(DB_USER_NAME, DB_PASSWORD)
32
+ end
33
+ puts "#{self.class.name} finished." if TEST_LOGGING
34
+ end
35
+
36
+ def test01
37
+ @database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
38
+ cxn.start_transaction do |tx|
39
+ assert(cxn.execute_immediate('insert into test values (1000)') == 1)
40
+ assert(cxn.execute_immediate('insert into test values (1000)') == 1)
41
+ assert(cxn.execute('insert into test values (2000)', tx) == 1)
42
+ assert(cxn.execute('insert into test values (2000)', tx) == 1)
43
+ assert(tx.execute('insert into test values (3000)') == 1)
44
+ assert(tx.execute('insert into test values (3000)') == 1)
45
+ assert(tx.execute('insert into test values (4000)') == 1)
46
+ assert(tx.execute('insert into test values (4000)') == 1)
47
+
48
+ assert(cxn.execute_immediate('update test set id = 10000 where '\
49
+ 'id = 1000') == 2)
50
+ assert(cxn.execute('update test set id = 20000 where id = 2000',
51
+ tx) == 2)
52
+ assert(tx.execute('update test set id = 30000 where id = 3000') == 2)
53
+
54
+ s = Statement.new(cxn, tx, 'update test set id = 40000 where id = ?',
55
+ 3)
56
+ assert(s.execute_for([4000]) == 2)
57
+
58
+
59
+ assert(cxn.execute_immediate('delete from test where id = 10000') == 2)
60
+ assert(cxn.execute('delete from test where id = 20000', tx) == 2)
61
+ assert(tx.execute('delete from test where id = 30000') == 2)
62
+ end
63
+ end
64
+ end
65
+ end