rubyfb 0.5.9 → 0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +36 -0
- data/Manifest +1 -0
- data/README +75 -175
- data/Rakefile +1 -1
- data/ext/Blob.c +1 -1
- data/ext/Connection.c +40 -126
- data/ext/FireRubyException.c +27 -41
- data/ext/Generator.c +61 -339
- data/ext/Generator.h +0 -5
- data/ext/ResultSet.c +201 -381
- data/ext/ResultSet.h +8 -9
- data/ext/Statement.c +495 -426
- data/ext/Statement.h +8 -11
- data/ext/Transaction.c +3 -2
- data/ext/TypeMap.c +44 -43
- data/ext/TypeMap.h +1 -1
- data/lib/active_record/connection_adapters/rubyfb_adapter.rb +370 -120
- data/lib/arel/visitors/rubyfb.rb +7 -3
- data/lib/arel/visitors/rubyfb_15compat.rb +8 -4
- data/lib/rubyfb_lib.so +0 -0
- data/lib/src.rb +76 -39
- data/rubyfb.gemspec +3 -3
- data/test/AddRemoveUserTest.rb +7 -0
- data/test/BackupRestoreTest.rb +1 -1
- data/test/BlobTest.rb +5 -5
- data/test/GeneratorTest.rb +8 -8
- data/test/KeyTest.rb +1 -2
- data/test/ResultSetTest.rb +14 -16
- data/test/RoleTest.rb +2 -2
- data/test/RowCountTest.rb +19 -19
- data/test/RowTest.rb +7 -8
- data/test/SQLTest.rb +7 -8
- data/test/StatementTest.rb +18 -24
- data/test/StoredProcedureTest.rb +80 -0
- data/test/TransactionTest.rb +1 -1
- data/test/TypeTest.rb +4 -5
- metadata +5 -5
data/lib/arel/visitors/rubyfb.rb
CHANGED
@@ -3,10 +3,14 @@ module Arel
|
|
3
3
|
class RubyFB < Arel::Visitors::ToSql
|
4
4
|
Arel::Visitors::VISITORS['rubyfb'] = Arel::Visitors::RubyFB
|
5
5
|
private
|
6
|
+
def visit_Arel_Nodes_Limit o
|
7
|
+
end
|
8
|
+
|
9
|
+
def visit_Arel_Nodes_Offset o
|
10
|
+
end
|
11
|
+
|
6
12
|
def visit_Arel_Nodes_SelectStatement o
|
7
|
-
limit
|
8
|
-
offset = o.offset; o.offset = nil;
|
9
|
-
limit || offset ? "SELECT #{fb_limit(limit)} #{fb_offset(offset)} * FROM (#{super})" : super
|
13
|
+
o.limit || o.offset ? "SELECT #{fb_limit(o.limit)} #{fb_offset(o.offset)} * FROM (#{super})" : super
|
10
14
|
end
|
11
15
|
|
12
16
|
def fb_limit limit
|
@@ -3,12 +3,16 @@ module Arel
|
|
3
3
|
class RubyFB_15Compat < Arel::Visitors::ToSql
|
4
4
|
Arel::Visitors::VISITORS['rubyfb'] = Arel::Visitors::RubyFB_15Compat
|
5
5
|
private
|
6
|
+
def visit_Arel_Nodes_Limit o
|
7
|
+
end
|
8
|
+
|
9
|
+
def visit_Arel_Nodes_Offset o
|
10
|
+
end
|
11
|
+
|
6
12
|
def visit_Arel_Nodes_SelectStatement o
|
7
|
-
limit = o.limit; o.limit = nil;
|
8
|
-
offset = o.offset; o.offset = nil;
|
9
13
|
super.tap do |s|
|
10
|
-
if limit || offset
|
11
|
-
s.gsub!(/^\s*select/i, "SELECT #{fb_limit(limit)} #{fb_offset(offset)} ")
|
14
|
+
if o.limit || o.offset
|
15
|
+
s.gsub!(/^\s*select/i, "SELECT #{fb_limit(o.limit)} #{fb_offset(o.offset)} ")
|
12
16
|
end
|
13
17
|
end
|
14
18
|
end
|
data/lib/rubyfb_lib.so
CHANGED
Binary file
|
data/lib/src.rb
CHANGED
@@ -360,6 +360,19 @@ module Rubyfb
|
|
360
360
|
def execute_immediate(sql)
|
361
361
|
yield(row)
|
362
362
|
end
|
363
|
+
|
364
|
+
#
|
365
|
+
# This function creates a new statement object
|
366
|
+
#
|
367
|
+
# ==== Parameters
|
368
|
+
# sql:: The SQL for the statement.
|
369
|
+
#
|
370
|
+
# ==== Exceptions
|
371
|
+
# Exception:: Generated whenever a problem occurs creating the
|
372
|
+
# statement object.
|
373
|
+
#
|
374
|
+
def create_statement(sql)
|
375
|
+
end
|
363
376
|
end
|
364
377
|
|
365
378
|
|
@@ -563,13 +576,9 @@ module Rubyfb
|
|
563
576
|
# ==== Parameters
|
564
577
|
# connection:: The Connection object that the SQL statement will be
|
565
578
|
# executed through.
|
566
|
-
# transaction:: The Transaction object that the SQL statement will be
|
567
|
-
# executed under.
|
568
579
|
# sql:: The SQL statement to be prepared for execution.
|
569
|
-
# dialect:: The Firebird dialect to be used in preparing the SQL
|
570
|
-
# statement.
|
571
580
|
#
|
572
|
-
def initialize(connection,
|
581
|
+
def initialize(connection, sql)
|
573
582
|
end
|
574
583
|
|
575
584
|
|
@@ -580,13 +589,6 @@ module Rubyfb
|
|
580
589
|
end
|
581
590
|
|
582
591
|
|
583
|
-
#
|
584
|
-
# This is the accessor for the transaction attribute.
|
585
|
-
#
|
586
|
-
def transaction
|
587
|
-
end
|
588
|
-
|
589
|
-
|
590
592
|
#
|
591
593
|
# This is the accessor for the SQL statement attribute.
|
592
594
|
#
|
@@ -619,27 +621,28 @@ module Rubyfb
|
|
619
621
|
|
620
622
|
|
621
623
|
#
|
622
|
-
# This method
|
623
|
-
#
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
#
|
628
|
-
#
|
629
|
-
#
|
624
|
+
# This method is used to determine whether a Statement object is prepared
|
625
|
+
#
|
626
|
+
def prepared?
|
627
|
+
end
|
628
|
+
|
629
|
+
#
|
630
|
+
# This method prepares the SQL statement
|
631
|
+
#
|
632
|
+
# ==== Parameters
|
633
|
+
# transaction:: A reference to the transaction object (optional).
|
634
|
+
# If this parameter is nil - the statement is prepared within
|
635
|
+
# its own (implicit) transaction.
|
630
636
|
#
|
631
637
|
# ==== Exception
|
632
|
-
# Exception:: Generated
|
633
|
-
# parameters or a problem occurs executing the SQL statement.
|
638
|
+
# Exception:: Generated whenever a problem occurspreparing the SQL statement.
|
634
639
|
#
|
635
|
-
def
|
636
|
-
yield row
|
640
|
+
def prepare(transaction=nil)
|
637
641
|
end
|
638
|
-
|
639
|
-
|
642
|
+
|
640
643
|
#
|
641
|
-
# This method executes the SQL statement within a Statement object
|
642
|
-
#
|
644
|
+
# This method executes the SQL statement within a Statement object optionaly
|
645
|
+
# passing it a set of parameters. Parameterized statements use question
|
643
646
|
# marks as place holders for values that may change between calls to
|
644
647
|
# execute the statement. This method returns a ResultSet object if the
|
645
648
|
# statement executed was a SQL query. If the statement was a non-query SQL
|
@@ -650,21 +653,54 @@ module Rubyfb
|
|
650
653
|
# returned by the query will be passed, one at a time, to the block.
|
651
654
|
#
|
652
655
|
# ==== Parameters
|
653
|
-
# parameters:: An array of the parameters for the statement. An effort
|
656
|
+
# parameters:: An array of the parameters (optional) for the statement. An effort
|
654
657
|
# will be made to convert the values passed in to the
|
655
658
|
# appropriate types but no guarantees are made (especially
|
656
659
|
# in the case of text fields, which will simply use to_s
|
657
660
|
# if the object passed is not a String).
|
658
661
|
#
|
662
|
+
# transaction:: A reference to the transaction object (optional).
|
663
|
+
# If this parameter is nil - the statement is execute within
|
664
|
+
# its own (implicit) transaction. For statements that return
|
665
|
+
# result set objects - the implicit transaction is resolved
|
666
|
+
# when the result set object is closed, for the other kind of statements
|
667
|
+
# the implicit transaction is resolved immediately after the execution
|
668
|
+
#
|
659
669
|
# ==== Exception
|
660
670
|
# Exception:: Generated whenever a problem occurs translating one of the
|
661
671
|
# input parameters or executing the SQL statement.
|
662
672
|
#
|
663
|
-
def
|
673
|
+
def exec(parameters=nil, transaction=nil)
|
664
674
|
yield row
|
665
675
|
end
|
666
676
|
|
667
|
-
|
677
|
+
#
|
678
|
+
# This method behaves exactly as the exec() method, except that the statement
|
679
|
+
# is also closed. If no result set is generated the statement is closed immediately,
|
680
|
+
# otherwise the statement close() call thakes place when the resul tset close() is called.
|
681
|
+
#
|
682
|
+
# ==== Parameters
|
683
|
+
# parameters:: An array of the parameters (optional) for the statement. An effort
|
684
|
+
# will be made to convert the values passed in to the
|
685
|
+
# appropriate types but no guarantees are made (especially
|
686
|
+
# in the case of text fields, which will simply use to_s
|
687
|
+
# if the object passed is not a String).
|
688
|
+
#
|
689
|
+
# transaction:: A reference to the transaction object (optional).
|
690
|
+
# If this parameter is nil - the statement is execute within
|
691
|
+
# its own (implicit) transaction. For statements that return
|
692
|
+
# result set objects - the implicit transaction is resolved
|
693
|
+
# when the result set object is closed, for the other kind of statements
|
694
|
+
# the implicit transaction is resolved immediately after the execution
|
695
|
+
#
|
696
|
+
# ==== Exception
|
697
|
+
# Exception:: Generated whenever a problem occurs translating one of the
|
698
|
+
# input parameters or executing the SQL statement.
|
699
|
+
#
|
700
|
+
def exec_and_close(parameters=nil, transaction=nil)
|
701
|
+
yield row
|
702
|
+
end
|
703
|
+
|
668
704
|
#
|
669
705
|
# This method releases the database resources associated with a Statement
|
670
706
|
# object and should be explicitly called when a Statement object is of
|
@@ -693,14 +729,9 @@ module Rubyfb
|
|
693
729
|
# This is the constructor for the ResultSet object.
|
694
730
|
#
|
695
731
|
# ==== Parameters
|
696
|
-
#
|
697
|
-
# to execute the SQL query.
|
732
|
+
# statement:: A reference to the Statement object.
|
698
733
|
# transaction:: A reference to the Transaction object that will be used
|
699
734
|
# in executing the SQL query.
|
700
|
-
# sql:: A reference to a String containing the SQL query that
|
701
|
-
# will be executed.
|
702
|
-
# dialect:: A reference to an integer containing the Firebird dialect
|
703
|
-
# to be used in executing the SQL statement.
|
704
735
|
#
|
705
736
|
# ==== Exceptions
|
706
737
|
# FireRubyException:: Generated whenever a non-query SQL statement is
|
@@ -708,7 +739,7 @@ module Rubyfb
|
|
708
739
|
# provided or a problem occurs executing the SQL
|
709
740
|
# against the database.
|
710
741
|
#
|
711
|
-
def initialize(
|
742
|
+
def initialize(statement, transaction)
|
712
743
|
end
|
713
744
|
|
714
745
|
|
@@ -725,6 +756,11 @@ module Rubyfb
|
|
725
756
|
def transaction
|
726
757
|
end
|
727
758
|
|
759
|
+
#
|
760
|
+
# This is the accessor for the statement attribute.
|
761
|
+
#
|
762
|
+
def statement
|
763
|
+
end
|
728
764
|
|
729
765
|
#
|
730
766
|
# This is the accessor for the sql attribute.
|
@@ -908,6 +944,7 @@ module Rubyfb
|
|
908
944
|
#
|
909
945
|
def column_count
|
910
946
|
end
|
947
|
+
|
911
948
|
|
912
949
|
|
913
950
|
#
|
@@ -1151,7 +1188,7 @@ module Rubyfb
|
|
1151
1188
|
|
1152
1189
|
#
|
1153
1190
|
# This method loads the segments of a blob one after another. The blob
|
1154
|
-
# segments are passed as strings to the block passed to the method.
|
1191
|
+
# segments are passed as BINARY strings to the block passed to the method.
|
1155
1192
|
#
|
1156
1193
|
def each
|
1157
1194
|
yield segment
|
data/rubyfb.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{rubyfb}
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.6"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = [%q{George Georgiev}]
|
9
|
-
s.date = %q{2011-
|
9
|
+
s.date = %q{2011-08-22}
|
10
10
|
s.description = %q{Firebird SQL access library}
|
11
11
|
s.email = %q{georgiev@heatbs.com}
|
12
12
|
s.extensions = [%q{ext/extconf.rb}]
|
13
13
|
s.extra_rdoc_files = [%q{CHANGELOG}, %q{LICENSE}, %q{README}, %q{examples/example01.rb}, %q{ext/extconf.rb}, %q{lib/Connection.rb}, %q{lib/ProcedureCall.rb}, %q{lib/SQLType.rb}, %q{lib/rubyfb.rb}, %q{lib/rubyfb_options.rb}, %q{lib/src.rb}]
|
14
|
-
s.files = [%q{CHANGELOG}, %q{LICENSE}, %q{Manifest}, %q{README}, %q{Rakefile}, %q{examples/example01.rb}, %q{ext/AddUser.c}, %q{ext/AddUser.h}, %q{ext/Backup.c}, %q{ext/Backup.h}, %q{ext/Blob.c}, %q{ext/Blob.h}, %q{ext/Common.c}, %q{ext/Common.h}, %q{ext/Connection.c}, %q{ext/Connection.h}, %q{ext/DataArea.c}, %q{ext/DataArea.h}, %q{ext/Database.c}, %q{ext/Database.h}, %q{ext/FireRuby.c}, %q{ext/FireRuby.h}, %q{ext/FireRubyException.c}, %q{ext/FireRubyException.h}, %q{ext/Generator.c}, %q{ext/Generator.h}, %q{ext/RemoveUser.c}, %q{ext/RemoveUser.h}, %q{ext/Restore.c}, %q{ext/Restore.h}, %q{ext/ResultSet.c}, %q{ext/ResultSet.h}, %q{ext/Row.c}, %q{ext/Row.h}, %q{ext/ServiceManager.c}, %q{ext/ServiceManager.h}, %q{ext/Services.c}, %q{ext/Services.h}, %q{ext/Statement.c}, %q{ext/Statement.h}, %q{ext/Transaction.c}, %q{ext/Transaction.h}, %q{ext/TypeMap.c}, %q{ext/TypeMap.h}, %q{ext/extconf.rb}, %q{ext/rfbint.h}, %q{ext/rfbsleep.h}, %q{ext/rfbstr.c}, %q{ext/rfbstr.h}, %q{ext/uncrustify.cfg}, %q{lib/Connection.rb}, %q{lib/ProcedureCall.rb}, %q{lib/SQLType.rb}, %q{lib/active_record/connection_adapters/rubyfb_adapter.rb}, %q{lib/arel/visitors/rubyfb.rb}, %q{lib/arel/visitors/rubyfb_15compat.rb}, %q{lib/mkdoc}, %q{lib/rubyfb.rb}, %q{lib/rubyfb_lib.so}, %q{lib/rubyfb_options.rb}, %q{lib/src.rb}, %q{mswin32fb/fbclient_mingw.def}, %q{mswin32fb/fbclient_mingw.lib}, %q{mswin32fb/fbclient_ms.lib}, %q{mswin32fb/ibase.h}, %q{mswin32fb/iberror.h}, %q{test/AddRemoveUserTest.rb}, %q{test/BackupRestoreTest.rb}, %q{test/BlobTest.rb}, %q{test/CharacterSetTest.rb}, %q{test/ConnectionTest.rb}, %q{test/DDLTest.rb}, %q{test/DatabaseTest.rb}, %q{test/FieldCharacterSetTest.rb}, %q{test/GeneratorTest.rb}, %q{test/KeyTest.rb}, %q{test/ResultSetTest.rb}, %q{test/RoleTest.rb}, %q{test/RowCountTest.rb}, %q{test/RowTest.rb}, %q{test/SQLTest.rb}, %q{test/SQLTypeTest.rb}, %q{test/ServiceManagerTest.rb}, %q{test/StatementTest.rb}, %q{test/TestSetup.rb}, %q{test/TransactionTest.rb}, %q{test/TypeTest.rb}, %q{rubyfb.gemspec}]
|
14
|
+
s.files = [%q{CHANGELOG}, %q{LICENSE}, %q{Manifest}, %q{README}, %q{Rakefile}, %q{examples/example01.rb}, %q{ext/AddUser.c}, %q{ext/AddUser.h}, %q{ext/Backup.c}, %q{ext/Backup.h}, %q{ext/Blob.c}, %q{ext/Blob.h}, %q{ext/Common.c}, %q{ext/Common.h}, %q{ext/Connection.c}, %q{ext/Connection.h}, %q{ext/DataArea.c}, %q{ext/DataArea.h}, %q{ext/Database.c}, %q{ext/Database.h}, %q{ext/FireRuby.c}, %q{ext/FireRuby.h}, %q{ext/FireRubyException.c}, %q{ext/FireRubyException.h}, %q{ext/Generator.c}, %q{ext/Generator.h}, %q{ext/RemoveUser.c}, %q{ext/RemoveUser.h}, %q{ext/Restore.c}, %q{ext/Restore.h}, %q{ext/ResultSet.c}, %q{ext/ResultSet.h}, %q{ext/Row.c}, %q{ext/Row.h}, %q{ext/ServiceManager.c}, %q{ext/ServiceManager.h}, %q{ext/Services.c}, %q{ext/Services.h}, %q{ext/Statement.c}, %q{ext/Statement.h}, %q{ext/Transaction.c}, %q{ext/Transaction.h}, %q{ext/TypeMap.c}, %q{ext/TypeMap.h}, %q{ext/extconf.rb}, %q{ext/rfbint.h}, %q{ext/rfbsleep.h}, %q{ext/rfbstr.c}, %q{ext/rfbstr.h}, %q{ext/uncrustify.cfg}, %q{lib/Connection.rb}, %q{lib/ProcedureCall.rb}, %q{lib/SQLType.rb}, %q{lib/active_record/connection_adapters/rubyfb_adapter.rb}, %q{lib/arel/visitors/rubyfb.rb}, %q{lib/arel/visitors/rubyfb_15compat.rb}, %q{lib/mkdoc}, %q{lib/rubyfb.rb}, %q{lib/rubyfb_lib.so}, %q{lib/rubyfb_options.rb}, %q{lib/src.rb}, %q{mswin32fb/fbclient_mingw.def}, %q{mswin32fb/fbclient_mingw.lib}, %q{mswin32fb/fbclient_ms.lib}, %q{mswin32fb/ibase.h}, %q{mswin32fb/iberror.h}, %q{test/AddRemoveUserTest.rb}, %q{test/BackupRestoreTest.rb}, %q{test/BlobTest.rb}, %q{test/CharacterSetTest.rb}, %q{test/ConnectionTest.rb}, %q{test/DDLTest.rb}, %q{test/DatabaseTest.rb}, %q{test/FieldCharacterSetTest.rb}, %q{test/GeneratorTest.rb}, %q{test/KeyTest.rb}, %q{test/ResultSetTest.rb}, %q{test/RoleTest.rb}, %q{test/RowCountTest.rb}, %q{test/RowTest.rb}, %q{test/SQLTest.rb}, %q{test/SQLTypeTest.rb}, %q{test/ServiceManagerTest.rb}, %q{test/StatementTest.rb}, %q{test/StoredProcedureTest.rb}, %q{test/TestSetup.rb}, %q{test/TransactionTest.rb}, %q{test/TypeTest.rb}, %q{rubyfb.gemspec}]
|
15
15
|
s.homepage = %q{http://rubyforge.org/projects/rubyfb}
|
16
16
|
s.rdoc_options = [%q{--line-numbers}, %q{--inline-source}, %q{--title}, %q{Rubyfb}, %q{--main}, %q{README}]
|
17
17
|
s.require_paths = [%q{lib}, %q{ext}]
|
data/test/AddRemoveUserTest.rb
CHANGED
@@ -32,6 +32,13 @@ class AddRemoveUserTest < Test::Unit::TestCase
|
|
32
32
|
sm = ServiceManager.new('localhost')
|
33
33
|
sm.connect(DB_USER_NAME, DB_PASSWORD)
|
34
34
|
|
35
|
+
begin
|
36
|
+
ru = RemoveUser.new('newuser')
|
37
|
+
ru.execute(sm)
|
38
|
+
sleep(3)
|
39
|
+
rescue
|
40
|
+
end
|
41
|
+
|
35
42
|
au = AddUser.new('newuser', 'password', 'first', 'middle', 'last')
|
36
43
|
au.execute(sm)
|
37
44
|
sleep(3)
|
data/test/BackupRestoreTest.rb
CHANGED
data/test/BlobTest.rb
CHANGED
@@ -39,8 +39,8 @@ class BlobTest < Test::Unit::TestCase
|
|
39
39
|
cxn.execute_immediate('create table blob_test (data blob sub_type 0)')
|
40
40
|
cxn.start_transaction do |tx|
|
41
41
|
|
42
|
-
s =
|
43
|
-
s.
|
42
|
+
s = cxn.create_statement('INSERT INTO BLOB_TEST VALUES(?)')
|
43
|
+
s.exec([DATA], tx)
|
44
44
|
|
45
45
|
# Perform a select of the value inserted.
|
46
46
|
r = cxn.execute('SELECT * FROM BLOB_TEST', tx)
|
@@ -62,14 +62,14 @@ class BlobTest < Test::Unit::TestCase
|
|
62
62
|
cxn.execute_immediate('create table blob_test (data blob sub_type 1 segment size 10 CHARACTER SET UTF8)')
|
63
63
|
cxn.start_transaction do |tx|
|
64
64
|
|
65
|
-
s =
|
66
|
-
s.
|
65
|
+
s = cxn.create_statement('INSERT INTO BLOB_TEST VALUES(?)')
|
66
|
+
s.exec([UTF_DATA], tx)
|
67
67
|
|
68
68
|
# Perform a select of the value inserted.
|
69
69
|
r = cxn.execute('SELECT * FROM BLOB_TEST', tx)
|
70
70
|
d = r.fetch
|
71
71
|
|
72
|
-
assert_equal(d[0].to_s
|
72
|
+
assert_equal(UTF_DATA, d[0].to_s)
|
73
73
|
|
74
74
|
# Clean up.
|
75
75
|
s.close
|
data/test/GeneratorTest.rb
CHANGED
@@ -33,17 +33,17 @@ class GeneratorTest < Test::Unit::TestCase
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def test01
|
36
|
-
assert(Generator::exists?('TEST_GEN', @connections[0])
|
36
|
+
assert(!Generator::exists?('TEST_GEN', @connections[0]))
|
37
37
|
g = Generator::create('TEST_GEN', @connections[0])
|
38
38
|
assert(Generator::exists?('TEST_GEN', @connections[0]))
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
39
|
+
assert_equal(0, g.last)
|
40
|
+
assert_equal(1, g.next(1))
|
41
|
+
assert_equal(1, g.last)
|
42
|
+
assert_equal(11, g.next(10))
|
43
|
+
assert_equal(@connections[0], g.connection)
|
44
|
+
assert_equal('TEST_GEN', g.name)
|
45
45
|
|
46
46
|
g.drop
|
47
|
-
assert(Generator::exists?('TEST_GEN', @connections[0])
|
47
|
+
assert(!Generator::exists?('TEST_GEN', @connections[0]))
|
48
48
|
end
|
49
49
|
end
|
data/test/KeyTest.rb
CHANGED
@@ -22,8 +22,7 @@ class KeyTest < Test::Unit::TestCase
|
|
22
22
|
database = Database::create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
|
23
23
|
@connection = database.connect(DB_USER_NAME, DB_PASSWORD)
|
24
24
|
@transaction = @connection.start_transaction
|
25
|
-
@results =
|
26
|
-
'SELECT * FROM RDB$FIELDS', 3, nil)
|
25
|
+
@results = @connection.execute('SELECT * FROM RDB$FIELDS', @transaction)
|
27
26
|
@empty = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
28
27
|
0, 0, 0, 0, 0, 0, 0, 0, 0]
|
29
28
|
|
data/test/ResultSetTest.rb
CHANGED
@@ -64,8 +64,8 @@ class ResultSetTest < Test::Unit::TestCase
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def test01
|
67
|
-
r =
|
68
|
-
|
67
|
+
r = @connections[0].execute("SELECT * FROM TEST_TABLE ORDER BY TESTID", @transactions[0])
|
68
|
+
assert_equal(Rubyfb::ResultSet, r.class)
|
69
69
|
|
70
70
|
assert(r.connection == @connections[0])
|
71
71
|
assert(r.transaction == @transactions[0])
|
@@ -80,8 +80,8 @@ class ResultSetTest < Test::Unit::TestCase
|
|
80
80
|
assert(r.fetch == nil)
|
81
81
|
r.close
|
82
82
|
|
83
|
-
r =
|
84
|
-
|
83
|
+
r = @connections[0].execute("SELECT * FROM TEST_TABLE ORDER BY TESTID", @transactions[0])
|
84
|
+
assert_equal(Rubyfb::ResultSet, r.class)
|
85
85
|
assert(r.column_count == 2)
|
86
86
|
assert(r.column_name(0) == 'TESTID')
|
87
87
|
assert(r.column_name(1) == 'TESTINFO')
|
@@ -97,8 +97,9 @@ class ResultSetTest < Test::Unit::TestCase
|
|
97
97
|
assert(r.column_alias(-1) == nil)
|
98
98
|
r.close
|
99
99
|
|
100
|
-
r =
|
101
|
-
|
100
|
+
r = @connections[0].execute("SELECT * FROM TEST_TABLE ORDER BY TESTID", @transactions[0])
|
101
|
+
assert_equal(Rubyfb::ResultSet, r.class)
|
102
|
+
|
102
103
|
total = 0
|
103
104
|
r.each do |row|
|
104
105
|
total += 1
|
@@ -108,9 +109,9 @@ class ResultSetTest < Test::Unit::TestCase
|
|
108
109
|
end
|
109
110
|
|
110
111
|
def test02
|
111
|
-
r =
|
112
|
-
|
113
|
-
|
112
|
+
r = @connections[0].execute_for('select * from test_table where testid between ? and ?',
|
113
|
+
[20, 40], @transactions[0])
|
114
|
+
assert_equal(Rubyfb::ResultSet, r.class)
|
114
115
|
assert(r.exhausted? == false)
|
115
116
|
total = 0
|
116
117
|
r.each {|row| total += 1}
|
@@ -120,17 +121,14 @@ class ResultSetTest < Test::Unit::TestCase
|
|
120
121
|
|
121
122
|
def test03
|
122
123
|
begin
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
assert(false, "Created result set with non-query SQL statement.")
|
124
|
+
r = @connections[0].execute_for("insert into test_table values(?, ?)",
|
125
|
+
[100, 'Should fail.'], @transactions[0])
|
126
|
+
assert_not_equal(Rubyfb::ResultSet, r.class, "Created result set with non-query SQL statement.")
|
127
127
|
rescue FireRubyException
|
128
128
|
end
|
129
129
|
|
130
130
|
begin
|
131
|
-
|
132
|
-
"select * from test_table where testid = ?", 3,
|
133
|
-
[])
|
131
|
+
r = @connections[0].execute_for("select * from test_table where testid = ?", [], @transactions[0])
|
134
132
|
assert(false, 'Created result set with insufficient parameters.')
|
135
133
|
rescue FireRubyException
|
136
134
|
end
|
data/test/RoleTest.rb
CHANGED
@@ -52,7 +52,7 @@ class RoleTest < Test::Unit::TestCase
|
|
52
52
|
cxn = @database.connect('user1', 'password')
|
53
53
|
assert_raise FireRubyException do
|
54
54
|
t1 = cxn.start_transaction
|
55
|
-
r =
|
55
|
+
r = cxn.execute("select * from test", t1)
|
56
56
|
r.fetch
|
57
57
|
r.close
|
58
58
|
t1.commit
|
@@ -62,7 +62,7 @@ class RoleTest < Test::Unit::TestCase
|
|
62
62
|
cxn = @database.connect('user1', 'password', {Connection::SQL_ROLE_NAME => "myrole"})
|
63
63
|
assert_nothing_raised do
|
64
64
|
t1 = cxn.start_transaction
|
65
|
-
r =
|
65
|
+
r = cxn.execute("select * from test", t1)
|
66
66
|
r.fetch
|
67
67
|
r.close
|
68
68
|
t1.commit
|
data/test/RowCountTest.rb
CHANGED
@@ -35,29 +35,29 @@ class RowCountTest < Test::Unit::TestCase
|
|
35
35
|
def test01
|
36
36
|
@database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
|
37
37
|
cxn.start_transaction do |tx|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
38
|
+
assert_equal(1, cxn.execute_immediate('insert into test values (1000)'))
|
39
|
+
assert_equal(1, cxn.execute_immediate('insert into test values (1000)'))
|
40
|
+
assert_equal(1, cxn.execute('insert into test values (2000)', tx))
|
41
|
+
assert_equal(1, cxn.execute('insert into test values (2000)', tx))
|
42
|
+
assert_equal(1, tx.execute('insert into test values (3000)'))
|
43
|
+
assert_equal(1, tx.execute('insert into test values (3000)'))
|
44
|
+
assert_equal(1, tx.execute('insert into test values (4000)'))
|
45
|
+
assert_equal(1, tx.execute('insert into test values (4000)'))
|
46
46
|
|
47
|
-
|
48
|
-
'id = 1000')
|
49
|
-
|
50
|
-
tx)
|
51
|
-
|
47
|
+
assert_equal(2, cxn.execute_immediate('update test set id = 10000 where '\
|
48
|
+
'id = 1000'))
|
49
|
+
assert_equal(2, cxn.execute('update test set id = 20000 where id = 2000',
|
50
|
+
tx))
|
51
|
+
assert_equal(2, tx.execute('update test set id = 30000 where id = 3000'))
|
52
52
|
|
53
|
-
s =
|
54
|
-
|
55
|
-
|
53
|
+
s = cxn.create_statement('update test set id = 40000 where id = ?')
|
54
|
+
|
55
|
+
assert_equal(2, s.exec([4000], tx))
|
56
56
|
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
|
58
|
+
assert_equal(2, cxn.execute_immediate('delete from test where id = 10000'))
|
59
|
+
assert_equal(2, cxn.execute('delete from test where id = 20000', tx))
|
60
|
+
assert_equal(2, tx.execute('delete from test where id = 30000'))
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
data/test/RowTest.rb
CHANGED
@@ -19,8 +19,7 @@ class RowTest < Test::Unit::TestCase
|
|
19
19
|
database = Database::create(DB_FILE, DB_USER_NAME, DB_PASSWORD)
|
20
20
|
@connection = database.connect(DB_USER_NAME, DB_PASSWORD)
|
21
21
|
@transaction = @connection.start_transaction
|
22
|
-
@results =
|
23
|
-
'SELECT * FROM RDB$FIELDS', 3, nil)
|
22
|
+
@results = @connection.execute('SELECT * FROM RDB$FIELDS', @transaction)
|
24
23
|
@empty = [[0, SQLType::INTEGER], [0, SQLType::INTEGER],
|
25
24
|
[0, SQLType::INTEGER], [0, SQLType::INTEGER],
|
26
25
|
[0, SQLType::INTEGER], [0, SQLType::INTEGER],
|
@@ -48,14 +47,14 @@ class RowTest < Test::Unit::TestCase
|
|
48
47
|
@connection.start_transaction do |tx|
|
49
48
|
tx.execute("insert into rowtest values (1, 'Two', 3)")
|
50
49
|
|
51
|
-
stmt =
|
50
|
+
stmt = @connection.create_statement(
|
52
51
|
"insert into all_types values(?, ?, ?, ?, ?, ?, "\
|
53
|
-
"?, ?, ?, ?, ?, ?, ?)"
|
54
|
-
|
55
|
-
#stmt.
|
56
|
-
stmt.
|
52
|
+
"?, ?, ?, ?, ?, ?, ?)"
|
53
|
+
)
|
54
|
+
#stmt.exec([nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil])
|
55
|
+
stmt.exec([100000, nil, 'La la la', Date.new(2005, 10, 29),
|
57
56
|
10.23, 100.751, 56.25, 12345, 19863.21, 123,
|
58
|
-
Time.new, Time.new, 'The End!'])
|
57
|
+
Time.new, Time.new, 'The End!'], tx)
|
59
58
|
end
|
60
59
|
end
|
61
60
|
|
data/test/SQLTest.rb
CHANGED
@@ -48,14 +48,14 @@ class SQLTest < Test::Unit::TestCase
|
|
48
48
|
def test01
|
49
49
|
@database.connect(DB_USER_NAME, DB_PASSWORD) do |cxn|
|
50
50
|
cxn.start_transaction do |tx|
|
51
|
-
s =
|
51
|
+
s = cxn.create_statement(INSERT_SQL)
|
52
52
|
f = 0.0
|
53
53
|
t = Time.new
|
54
54
|
|
55
55
|
1.upto(ITERATIONS) do |i|
|
56
56
|
f += 0.321
|
57
57
|
t = Time.at(t.to_i + 5)
|
58
|
-
s.
|
58
|
+
s.exec([i, i.to_s, f, t, nil, t], tx)
|
59
59
|
end
|
60
60
|
|
61
61
|
s.close
|
@@ -129,9 +129,8 @@ class SQLTest < Test::Unit::TestCase
|
|
129
129
|
@transactions[0].commit
|
130
130
|
|
131
131
|
@connections[0].start_transaction do |tx|
|
132
|
-
s =
|
133
|
-
|
134
|
-
s.execute()
|
132
|
+
s = @connections[0].create_statement("UPDATE TEST_TABLE SET TESTSTAMP = NULL")
|
133
|
+
s.exec(nil, tx)
|
135
134
|
s.close
|
136
135
|
|
137
136
|
r = tx.execute("SELECT TESTSTAMP FROM TEST_TABLE")
|
@@ -148,11 +147,11 @@ class SQLTest < Test::Unit::TestCase
|
|
148
147
|
t = nil
|
149
148
|
@connections[0].start_transaction do |tx|
|
150
149
|
# Perform an insert via a parameterized statement.
|
151
|
-
s =
|
150
|
+
s = @connections[0].create_statement(
|
152
151
|
"INSERT INTO TEST_TABLE (TESTID, TESTTEXT, "\
|
153
|
-
"TESTFLOAT, TESTSTAMP) VALUES(?, ?, ?, ?)"
|
152
|
+
"TESTFLOAT, TESTSTAMP) VALUES(?, ?, ?, ?)")
|
154
153
|
t = Time.new
|
155
|
-
s.
|
154
|
+
s.exec([25000, 'La la la', 3.14, t], tx)
|
156
155
|
s.close
|
157
156
|
|
158
157
|
# Fetch the record and check the data.
|