do_sqlite3 0.9.12-x86-mingw32

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.
@@ -0,0 +1,42 @@
1
+ # ENV["RC_ARCHS"] = `uname -m`.chomp if `uname -sr` =~ /^Darwin/
2
+ #
3
+ # require 'mkmf'
4
+ #
5
+ # SWIG_WRAP = "sqlite3_api_wrap.c"
6
+ #
7
+ # dir_config( "sqlite3", "/usr/local" )
8
+ #
9
+ # if have_header( "sqlite3.h" ) && have_library( "sqlite3", "sqlite3_open" )
10
+ # create_makefile( "sqlite3_c" )
11
+ # end
12
+
13
+ if RUBY_PLATFORM =~ /darwin/
14
+ ENV["RC_ARCHS"] = `uname -m`.chomp if `uname -sr` =~ /^Darwin/
15
+
16
+ # On PowerPC the defaults are fine
17
+ ENV["RC_ARCHS"] = '' if `uname -m` =~ /^Power Macintosh/
18
+ end
19
+
20
+ # Loads mkmf which is used to make makefiles for Ruby extensions
21
+ require 'mkmf'
22
+
23
+ # Give it a name
24
+ extension_name = 'do_sqlite3_ext'
25
+
26
+ dir_config("sqlite3")
27
+
28
+ # NOTE: use GCC flags unless Visual C compiler is used
29
+ $CFLAGS << ' -Wall ' unless RUBY_PLATFORM =~ /mswin/
30
+
31
+ if RUBY_VERSION < '1.8.6'
32
+ $CFLAGS << ' -DRUBY_LESS_THAN_186'
33
+ end
34
+
35
+ # Do the work
36
+ # create_makefile(extension_name)
37
+ if have_header( "sqlite3.h" ) && have_library( "sqlite3", "sqlite3_open" )
38
+ have_func("sqlite3_prepare_v2")
39
+ have_func("sqlite3_open_v2")
40
+
41
+ create_makefile(extension_name)
42
+ end
data/lib/do_sqlite3.rb ADDED
@@ -0,0 +1,38 @@
1
+ # HACK: If running on Windows, then add the current directory to the PATH
2
+ # for the current process so it can find the bundled dlls before the require
3
+ # of the actual extension file.
4
+ if RUBY_PLATFORM.match(/mingw|mswin/i)
5
+ libdir = File.expand_path(File.dirname(__FILE__)).gsub(File::SEPARATOR, File::ALT_SEPARATOR)
6
+ ENV['PATH'] = "#{libdir};" + ENV['PATH']
7
+ end
8
+
9
+ require 'rubygems'
10
+ require 'data_objects'
11
+ if RUBY_PLATFORM =~ /java/
12
+ require 'do_jdbc'
13
+ require 'java'
14
+ gem 'jdbc-sqlite3'
15
+ require 'jdbc/sqlite3' # the JDBC driver, packaged as a gem
16
+ end
17
+
18
+ require 'do_sqlite3_ext'
19
+ require File.expand_path(File.join(File.dirname(__FILE__), 'do_sqlite3', 'version'))
20
+ require File.expand_path(File.join(File.dirname(__FILE__), 'do_sqlite3', 'transaction'))
21
+
22
+ if RUBY_PLATFORM =~ /java/
23
+ # Another way of loading the JDBC Class. This seems to be more reliable
24
+ # than Class.forName() within the data_objects.Connection Java class,
25
+ # which is currently not working as expected.
26
+ import 'org.sqlite.JDBC'
27
+
28
+ module DataObjects
29
+ module Sqlite3
30
+ class Connection
31
+ def self.pool_size
32
+ 20
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,36 @@
1
+
2
+ module DataObjects
3
+
4
+ module Sqlite3
5
+
6
+ class Transaction < DataObjects::Transaction
7
+
8
+ def begin
9
+ cmd = "BEGIN"
10
+ connection.create_command(cmd).execute_non_query
11
+ end
12
+
13
+ def commit
14
+ cmd = "COMMIT"
15
+ connection.create_command(cmd).execute_non_query
16
+ end
17
+
18
+ def rollback
19
+ cmd = "ROLLBACK"
20
+ connection.create_command(cmd).execute_non_query
21
+ end
22
+
23
+ def rollback_prepared
24
+ cmd = "ROLLBACK"
25
+ connection.create_command(cmd).execute_non_query
26
+ end
27
+
28
+ def prepare
29
+ # Eek, I don't know how to do this. Lets hope a commit arrives soon...
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
@@ -0,0 +1,5 @@
1
+ module DataObjects
2
+ module Sqlite3
3
+ VERSION = "0.9.12"
4
+ end
5
+ end
Binary file
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
4
+ require 'data_objects/spec/command_spec'
5
+
6
+ describe DataObjects::Sqlite3::Command do
7
+ it_should_behave_like 'a Command'
8
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
4
+ require 'data_objects/spec/connection_spec'
5
+
6
+ describe DataObjects::Sqlite3::Connection do
7
+
8
+ before :all do
9
+ @driver = CONFIG.scheme
10
+ @user = CONFIG.user
11
+ @password = CONFIG.pass
12
+ @host = CONFIG.host
13
+ @port = CONFIG.port
14
+ @database = CONFIG.database
15
+ end
16
+
17
+ it_should_behave_like 'a Connection'
18
+ end
@@ -0,0 +1,3 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'data_objects', 'spec', 'lib', 'rspec_immediate_feedback_formatter'))
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
4
+ require 'data_objects/spec/reader_spec'
5
+
6
+ describe DataObjects::Sqlite3::Reader do
7
+ it_should_behave_like 'a Reader'
8
+ end
@@ -0,0 +1,9 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
4
+ require 'data_objects/spec/result_spec'
5
+
6
+ describe DataObjects::Sqlite3::Result do
7
+ it_should_behave_like 'a Result'
8
+ it_should_behave_like 'a Result which returns inserted keys'
9
+ end
@@ -0,0 +1,124 @@
1
+ $TESTING=true
2
+ JRUBY = RUBY_PLATFORM =~ /java/
3
+
4
+ require 'rubygems'
5
+
6
+ gem 'rspec', '>1.1.12'
7
+ require 'spec'
8
+
9
+ require 'date'
10
+ require 'ostruct'
11
+ require 'pathname'
12
+ require 'fileutils'
13
+
14
+ # put data_objects from repository in the load path
15
+ # DO NOT USE installed gem of data_objects!
16
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data_objects', 'lib'))
17
+ require 'data_objects'
18
+
19
+ DATAOBJECTS_SPEC_ROOT = Pathname(__FILE__).dirname.parent.parent + 'data_objects' + 'spec'
20
+ Pathname.glob((DATAOBJECTS_SPEC_ROOT + 'lib/**/*.rb').to_s).each { |f| require f }
21
+
22
+ if JRUBY
23
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'do_jdbc', 'lib'))
24
+ require 'do_jdbc'
25
+ end
26
+
27
+ # put the pre-compiled extension in the path to be found
28
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
29
+ require 'do_sqlite3'
30
+
31
+ log_path = File.expand_path(File.join(File.dirname(__FILE__), '..', 'log', 'do.log'))
32
+ FileUtils.mkdir_p(File.dirname(log_path))
33
+
34
+ DataObjects::Sqlite3.logger = DataObjects::Logger.new(log_path, :debug)
35
+
36
+ at_exit { DataObjects.logger.flush }
37
+
38
+ Spec::Runner.configure do |config|
39
+ config.include(DataObjects::Spec::PendingHelpers)
40
+ end
41
+
42
+ CONFIG = OpenStruct.new
43
+ CONFIG.scheme = 'sqlite3'
44
+ CONFIG.database = ENV['DO_SQLITE3_DATABASE'] || "#{File.expand_path(File.dirname(__FILE__))}/test.db"
45
+
46
+ CONFIG.uri = ENV["DO_SQLITE3_SPEC_URI"] || "#{CONFIG.scheme}://#{CONFIG.database}"
47
+
48
+ module DataObjectsSpecHelpers
49
+
50
+ def setup_test_environment
51
+ conn = DataObjects::Connection.new(CONFIG.uri)
52
+
53
+ conn.create_command(<<-EOF).execute_non_query
54
+ DROP TABLE IF EXISTS "invoices"
55
+ EOF
56
+
57
+ conn.create_command(<<-EOF).execute_non_query
58
+ DROP TABLE IF EXISTS "users"
59
+ EOF
60
+
61
+ conn.create_command(<<-EOF).execute_non_query
62
+ DROP TABLE IF EXISTS "widgets"
63
+ EOF
64
+
65
+ conn.create_command(<<-EOF).execute_non_query
66
+ CREATE TABLE "users" (
67
+ "id" SERIAL,
68
+ "name" VARCHAR(200) default 'Billy' NULL,
69
+ "fired_at" timestamp,
70
+ PRIMARY KEY ("id")
71
+ );
72
+ EOF
73
+
74
+ conn.create_command(<<-EOF).execute_non_query
75
+ CREATE TABLE "invoices" (
76
+ "id" SERIAL,
77
+ "invoice_number" varchar(50) NOT NULL,
78
+ PRIMARY KEY ("id")
79
+ );
80
+ EOF
81
+
82
+ conn.create_command(<<-EOF).execute_non_query
83
+ CREATE TABLE "widgets" (
84
+ "id" INTEGER PRIMARY KEY AUTOINCREMENT,
85
+ "code" char(8) default 'A14' NULL,
86
+ "name" varchar(200) default 'Super Widget' NULL,
87
+ "shelf_location" text NULL,
88
+ "description" text NULL,
89
+ "image_data" blob NULL,
90
+ "ad_description" text NULL,
91
+ "ad_image" blob NULL,
92
+ "whitepaper_text" text NULL,
93
+ "cad_drawing" blob,
94
+ "flags" char default 'f',
95
+ "number_in_stock" smallint default 500,
96
+ "number_sold" integer default 0,
97
+ "super_number" bigint default 9223372036854775807,
98
+ "weight" float default 1.23,
99
+ "cost1" double precision default 10.23,
100
+ "cost2" decimal(8,2) default 50.23,
101
+ "release_date" date default '2008-02-14',
102
+ "release_datetime" timestamp default '2008-02-14T00:31:12+00:00',
103
+ "release_timestamp" timestamp with time zone default '2008-02-14 00:31:31'
104
+ );
105
+ EOF
106
+
107
+ 1.upto(16) do |n|
108
+ conn.create_command(<<-EOF).execute_non_query
109
+ insert into widgets(code, name, shelf_location, description, image_data, ad_description, ad_image, whitepaper_text, cad_drawing, super_number, weight) VALUES ('W#{n.to_s.rjust(7,"0")}', 'Widget #{n}', 'A14', 'This is a description', 'IMAGE DATA', 'Buy this product now!', 'AD IMAGE DATA', 'String', 'CAD DRAWING', 1234, 13.4);
110
+ EOF
111
+ end
112
+
113
+ conn.create_command(<<-EOF).execute_non_query
114
+ update widgets set flags = 't' where id = 2
115
+ EOF
116
+
117
+ conn.create_command(<<-EOF).execute_non_query
118
+ update widgets set ad_description = NULL where id = 3
119
+ EOF
120
+
121
+ conn.close
122
+ end
123
+
124
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
4
+ require 'data_objects/spec/typecast/array_spec'
5
+
6
+ describe 'DataObjects::Sqlite3 with Array' do
7
+ it_should_behave_like 'supporting Array'
8
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
4
+ require 'data_objects/spec/typecast/bigdecimal_spec'
5
+
6
+ describe 'DataObjects::Sqlite3 with BigDecimal' do
7
+ it_should_behave_like 'supporting BigDecimal'
8
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
4
+ require 'data_objects/spec/typecast/boolean_spec'
5
+
6
+ describe 'DataObjects::Sqlite3 with Boolean' do
7
+ it_should_behave_like 'supporting Boolean'
8
+ end
@@ -0,0 +1,9 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
4
+ require 'data_objects/spec/typecast/byte_array_spec'
5
+
6
+ describe 'DataObjects::Sqlite3 with ByteArray' do
7
+ # We need to switch to using parameter binding for this to work with Sqlite3
8
+ # it_should_behave_like 'supporting ByteArray'
9
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
4
+ require 'data_objects/spec/typecast/class_spec'
5
+
6
+ describe 'DataObjects::Sqlite3 with Class' do
7
+ it_should_behave_like 'supporting Class'
8
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
4
+ require 'data_objects/spec/typecast/date_spec'
5
+
6
+ describe 'DataObjects::Sqlite3 with Date' do
7
+ it_should_behave_like 'supporting Date'
8
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
4
+ require 'data_objects/spec/typecast/datetime_spec'
5
+
6
+ describe 'DataObjects::Sqlite3 with DateTime' do
7
+ it_should_behave_like 'supporting DateTime'
8
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
4
+ require 'data_objects/spec/typecast/float_spec'
5
+
6
+ describe 'DataObjects::Sqlite3 with Float' do
7
+ it_should_behave_like 'supporting Float'
8
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
4
+ require 'data_objects/spec/typecast/integer_spec'
5
+
6
+ describe 'DataObjects::Sqlite3 with Integer' do
7
+ it_should_behave_like 'supporting Integer'
8
+ end
@@ -0,0 +1,10 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
4
+ require 'data_objects/spec/typecast/nil_spec'
5
+
6
+ describe 'DataObjects::Sqlite3 with Nil' do
7
+ it_should_behave_like 'supporting Nil'
8
+ # it_should_behave_like 'supporting writing an Nil'
9
+ it_should_behave_like 'supporting Nil autocasting'
10
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
4
+ require 'data_objects/spec/typecast/range_spec'
5
+
6
+ describe 'DataObjects::Sqlite3 with Range' do
7
+ it_should_behave_like 'supporting Range'
8
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
4
+ require 'data_objects/spec/typecast/string_spec'
5
+
6
+ describe 'DataObjects::Sqlite3 with String' do
7
+ it_should_behave_like 'supporting String'
8
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
4
+ require 'data_objects/spec/typecast/time_spec'
5
+
6
+ describe 'DataObjects::Sqlite3 with Time' do
7
+ it_should_behave_like 'supporting Time'
8
+ end