amalgalite 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/HISTORY +4 -0
  2. data/LICENSE +31 -0
  3. data/README +28 -0
  4. data/ext/amalgalite3.c +191 -0
  5. data/ext/amalgalite3.h +97 -0
  6. data/ext/amalgalite3_constants.c +179 -0
  7. data/ext/amalgalite3_database.c +458 -0
  8. data/ext/amalgalite3_statement.c +546 -0
  9. data/ext/gen_constants.rb +114 -0
  10. data/ext/mkrf_conf.rb +6 -0
  11. data/ext/sqlite3.c +87003 -0
  12. data/ext/sqlite3.h +5638 -0
  13. data/ext/sqlite3_options.h +4 -0
  14. data/ext/sqlite3ext.h +362 -0
  15. data/gemspec.rb +50 -0
  16. data/lib/amalgalite.rb +28 -0
  17. data/lib/amalgalite/blob.rb +14 -0
  18. data/lib/amalgalite/boolean.rb +42 -0
  19. data/lib/amalgalite/column.rb +83 -0
  20. data/lib/amalgalite/database.rb +505 -0
  21. data/lib/amalgalite/index.rb +27 -0
  22. data/lib/amalgalite/paths.rb +70 -0
  23. data/lib/amalgalite/profile_tap.rb +130 -0
  24. data/lib/amalgalite/schema.rb +90 -0
  25. data/lib/amalgalite/sqlite3.rb +4 -0
  26. data/lib/amalgalite/sqlite3/constants.rb +48 -0
  27. data/lib/amalgalite/sqlite3/version.rb +38 -0
  28. data/lib/amalgalite/statement.rb +307 -0
  29. data/lib/amalgalite/table.rb +34 -0
  30. data/lib/amalgalite/taps/console.rb +27 -0
  31. data/lib/amalgalite/taps/io.rb +71 -0
  32. data/lib/amalgalite/trace_tap.rb +35 -0
  33. data/lib/amalgalite/type_map.rb +60 -0
  34. data/lib/amalgalite/type_maps/default_map.rb +153 -0
  35. data/lib/amalgalite/type_maps/storage_map.rb +41 -0
  36. data/lib/amalgalite/type_maps/text_map.rb +23 -0
  37. data/lib/amalgalite/version.rb +32 -0
  38. data/lib/amalgalite/view.rb +24 -0
  39. data/spec/amalgalite_spec.rb +4 -0
  40. data/spec/boolean_spec.rb +26 -0
  41. data/spec/database_spec.rb +222 -0
  42. data/spec/default_map_spec.rb +85 -0
  43. data/spec/integeration_spec.rb +111 -0
  44. data/spec/paths_spec.rb +28 -0
  45. data/spec/schema_spec.rb +46 -0
  46. data/spec/spec_helper.rb +25 -0
  47. data/spec/sqlite3/constants_spec.rb +25 -0
  48. data/spec/sqlite3/version_spec.rb +14 -0
  49. data/spec/sqlite3_spec.rb +34 -0
  50. data/spec/statement_spec.rb +116 -0
  51. data/spec/storage_map_spec.rb +41 -0
  52. data/spec/tap_spec.rb +59 -0
  53. data/spec/text_map_spec.rb +23 -0
  54. data/spec/type_map_spec.rb +17 -0
  55. data/spec/version_spec.rb +9 -0
  56. data/tasks/announce.rake +38 -0
  57. data/tasks/config.rb +108 -0
  58. data/tasks/distribution.rake +38 -0
  59. data/tasks/documentation.rake +31 -0
  60. data/tasks/extension.rake +45 -0
  61. data/tasks/rspec.rake +32 -0
  62. data/tasks/rubyforge.rake +48 -0
  63. data/tasks/utils.rb +80 -0
  64. metadata +165 -0
data/HISTORY ADDED
@@ -0,0 +1,4 @@
1
+ = Changelog
2
+ == Version 0.1.0 - 2008-06-20
3
+
4
+ * Initial public release
data/LICENSE ADDED
@@ -0,0 +1,31 @@
1
+ Copyright (c) 2008, Jeremy Hinegardner
2
+
3
+ All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ * Redistributions of source code must retain the above copyright notice,
9
+ this list of conditions and the following disclaimer.
10
+
11
+ * Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the
13
+ documentation and/or other materials provided with the
14
+ distribution.
15
+
16
+ * Neither the name of Jeremy Hinegardner nor the
17
+ names of its contributors may be used to endorse or promote
18
+ products derived from this software without specific prior written
19
+ permission.
20
+
21
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
22
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
23
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
24
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
25
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README ADDED
@@ -0,0 +1,28 @@
1
+ == Amalgalite
2
+
3
+ * Homepage[http://www.copiousfreetime.org/projects/amalgalite]
4
+ * {Rubyforge Project}[http://rubyforge.org/projects/copiousfreetime/]
5
+ * email jeremy at copiousfreetime dot org
6
+
7
+ == INSTALL
8
+
9
+ * gem install amalgalite
10
+
11
+ == DESCRIPTION
12
+
13
+ Amalgalite embeds the SQLite database engine in a ruby extension.
14
+
15
+ Scroll through Amalgalite::Database for a quick example, and a general overview
16
+ of the API.
17
+
18
+ == CREDITS
19
+
20
+ * Jamis Buck for the first {ruby sqlite implementation}[http://www.rubyforge.org/projects/sqlite-ruby]
21
+
22
+ == LICENSE
23
+
24
+ Copyright (c) 2008 Jeremy Hinegardner
25
+
26
+ All rights reserved.
27
+
28
+ See LICENSE and/or COPYING for details.
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Copyright (c) 2008 Jeremy Hinegardner
3
+ * All rights reserved. See LICENSE and/or COPYING for details.
4
+ *
5
+ * vim: shiftwidth=4
6
+ */
7
+
8
+ #include "amalgalite3.h"
9
+
10
+ /* Module and Classes */
11
+ VALUE mA; /* module Amalgalite */
12
+ VALUE mAS; /* module Amalgalite::SQLite3 */
13
+ VALUE mASV; /* module Amalgalite::SQLite3::Version */
14
+ VALUE eAS_Error; /* class Amalgalite::SQLite3::Error */
15
+
16
+ /*----------------------------------------------------------------------
17
+ * module methods for Amalgalite::SQLite3
18
+ *---------------------------------------------------------------------*/
19
+
20
+ /*
21
+ * call-seq:
22
+ * Amalgalite::SQLite3.threadsafe? -> true or false
23
+ *
24
+ * Has the SQLite3 extension been compiled "threadsafe". If threadsafe? is
25
+ * true then the internal SQLite mutexes are enabled and SQLite is threadsafe.
26
+ * That is threadsafe within the context of 'C' threads.
27
+ *
28
+ */
29
+ VALUE am_sqlite3_threadsafe(VALUE self)
30
+ {
31
+ if (sqlite3_threadsafe()) {
32
+ return Qtrue;
33
+ } else {
34
+ return Qfalse;
35
+ }
36
+ }
37
+
38
+ /*
39
+ * call-seq:
40
+ * Amalgalite::SQLite3.complete?( ... , opts = { :utf16 => false }) -> True, False
41
+ *
42
+ * Is the text passed in as a parameter a complete SQL statement? Or is
43
+ * additional input required before sending the SQL to the extension. If the
44
+ * extra 'opts' parameter is used, you can send in a UTF-16 encoded string as
45
+ * the SQL.
46
+ *
47
+ * A complete statement must end with a semicolon.
48
+ *
49
+ */
50
+ VALUE am_sqlite3_complete(VALUE self, VALUE args)
51
+ {
52
+ VALUE sql = rb_ary_shift( args );
53
+ VALUE opts = rb_ary_shift( args );
54
+ VALUE utf16 = Qnil;
55
+ int result = 0;
56
+
57
+ if ( ( Qnil != opts ) && ( T_HASH == TYPE(opts) ) ){
58
+ utf16 = rb_hash_aref( opts, rb_intern("utf16") );
59
+ }
60
+
61
+ if ( (Qfalse == utf16) || (Qnil == utf16) ) {
62
+ result = sqlite3_complete( StringValuePtr( sql ) );
63
+ } else {
64
+ result = sqlite3_complete16( (void*) StringValuePtr( sql ) );
65
+ }
66
+
67
+ return ( result > 0 ) ? Qtrue : Qfalse;
68
+ }
69
+
70
+ /*
71
+ * call-seq:
72
+ * Amalgalite::SQLite3.memory_used -> Numeric
73
+ *
74
+ * Return the number of bytes of memory outstanding in the SQLite extension
75
+ */
76
+ VALUE am_sqlite3_memory_used(VALUE self)
77
+ {
78
+ return SQLINT64_2NUM(sqlite3_memory_used());
79
+ }
80
+
81
+ /*
82
+ * call-seq:
83
+ * Amalgalite::SQLite3.memory_highwater_mark -> Numeric
84
+ *
85
+ * Return the maximum value of Amalgalite::SQLite3.memory_used since the last
86
+ * time the highwater mark was reset.
87
+ *
88
+ */
89
+ VALUE am_sqlite3_memory_highwater(VALUE self)
90
+ {
91
+ return SQLINT64_2NUM(sqlite3_memory_highwater(0));
92
+ }
93
+
94
+ /*
95
+ * call-seq:
96
+ * Amalgalite::SQLite3.memory_highwater_mark_reset!
97
+ *
98
+ * Reset the memory highwater mark. The highwater mark becomes the current
99
+ * value of memory_used.
100
+ *
101
+ */
102
+ VALUE am_sqlite3_memory_highwater_reset(VALUE self)
103
+ {
104
+ return SQLINT64_2NUM(sqlite3_memory_highwater(1));
105
+ }
106
+
107
+ /*
108
+ * call-seq:
109
+ * Amalgalite::SQLite3.randomness( N ) -> String of length N
110
+ *
111
+ * Generate N bytes of random data.
112
+ *
113
+ */
114
+ VALUE am_sqlite3_randomness(VALUE self, VALUE num_bytes)
115
+ {
116
+ int n = NUM2INT(num_bytes);
117
+ char *buf = ALLOCA_N(char, n);
118
+
119
+ sqlite3_randomness( n, buf );
120
+ return rb_str_new( buf, n );
121
+ }
122
+
123
+ /*----------------------------------------------------------------------
124
+ * module methods for Amalgalite::SQLite3::Version
125
+ *---------------------------------------------------------------------*/
126
+
127
+ /*
128
+ * call-seq:
129
+ * Amalgalite::SQLite3::Version.to_s -> String
130
+ *
131
+ * Return the SQLite C library version number as a string
132
+ *
133
+ */
134
+ VALUE am_sqlite3_libversion(VALUE self)
135
+ {
136
+ return rb_str_new2(sqlite3_libversion());
137
+ }
138
+
139
+ /*
140
+ * call-seq:
141
+ * Amalgalite::SQLite3.Version.to_i -> Fixnum
142
+ *
143
+ * Return the SQLite C library version number as an integer
144
+ *
145
+ */
146
+ VALUE am_sqlite3_libversion_number(VALUE self)
147
+ {
148
+ return INT2FIX(sqlite3_libversion_number());
149
+ }
150
+
151
+
152
+ void Init_amalgalite3()
153
+ {
154
+ /*
155
+ * top level module encapsulating the entire Amalgalite library
156
+ */
157
+ mA = rb_define_module("Amalgalite");
158
+
159
+ /*
160
+ * module encapsulating the SQLite C extension
161
+ */
162
+ mAS = rb_define_module_under(mA, "SQLite3");
163
+ rb_define_module_function(mAS, "threadsafe?", am_sqlite3_threadsafe, 0);
164
+ rb_define_module_function(mAS, "complete?", am_sqlite3_complete, -2);
165
+ rb_define_module_function(mAS, "memory_used", am_sqlite3_memory_used,0);
166
+ rb_define_module_function(mAS, "memory_highwater_mark", am_sqlite3_memory_highwater,0);
167
+ rb_define_module_function(mAS, "memory_highwater_mark_reset!", am_sqlite3_memory_highwater_reset,0);
168
+ rb_define_module_function(mAS, "randomness", am_sqlite3_randomness,1);
169
+
170
+ /*
171
+ * Base class of all SQLite3 errors
172
+ */
173
+ eAS_Error = rb_define_class_under(mAS, "Error", rb_eStandardError);
174
+
175
+ /**
176
+ * Encapsulation of the SQLite C library version
177
+ */
178
+ mASV = rb_define_module_under(mAS, "Version");
179
+ rb_define_module_function(mASV, "to_s", am_sqlite3_libversion, 0); /* in amalgalite3.c */
180
+ rb_define_module_function(mASV, "to_i", am_sqlite3_libversion_number, 0); /* in amalgalite3.c */
181
+
182
+ /*
183
+ * Initialize the rest of the module
184
+ */
185
+ Init_amalgalite3_constants( );
186
+ Init_amalgalite3_database( );
187
+ Init_amalgalite3_statement( );
188
+
189
+ }
190
+
191
+
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Copyright (c) 2008 Jeremy Hinegardner
3
+ * All rights reserved. See LICENSE and/or COPYING for details.
4
+ *
5
+ * vim: shiftwidth=4
6
+ */
7
+
8
+ #ifndef __AMALGALITE_H__
9
+ #define __AMALGALITE_H__
10
+
11
+ #include "ruby.h"
12
+ #include "sqlite3.h"
13
+
14
+ /* wrapper struct around the sqlite3 opaque pointer */
15
+ typedef struct am_sqlite3 {
16
+ sqlite3 *db;
17
+ VALUE trace_obj;
18
+ VALUE profile_obj;
19
+ } am_sqlite3;
20
+
21
+ /* wrapper struct around the sqlite3_statement opaque pointer */
22
+ typedef struct am_sqlite3_stmt {
23
+ sqlite3_stmt *stmt;
24
+ VALUE remaining_sql;
25
+ } am_sqlite3_stmt;
26
+
27
+
28
+ /** module and classes **/
29
+ extern VALUE mA; /* module Amalgalite */
30
+ extern VALUE mAS; /* module Amalgalite::SQLite3 */
31
+ extern VALUE mASV; /* module Amalgalite::SQLite3::Version */
32
+ extern VALUE eAS_Error; /* class Amalgalite::SQLite3::Error */
33
+
34
+ /*----------------------------------------------------------------------
35
+ * Prototype for Amalgalite::SQLite3::Database
36
+ *---------------------------------------------------------------------*/
37
+ extern VALUE cAS_Database; /* class Amalgliate::SQLite3::Database */
38
+
39
+ extern void am_define_constants_under(VALUE);
40
+ extern VALUE am_sqlite3_database_alloc(VALUE klass);
41
+ extern void am_sqlite3_database_free(am_sqlite3*);
42
+ extern VALUE am_sqlite3_database_open(int argc, VALUE* argv, VALUE self);
43
+ extern VALUE am_sqlite3_database_close(VALUE self);
44
+ extern VALUE am_sqlite3_database_open16(VALUE self, VALUE rFilename);
45
+ extern VALUE am_sqlite3_database_last_insert_rowid(VALUE self);
46
+ extern VALUE am_sqlite3_database_is_autocommit(VALUE self);
47
+ extern VALUE am_sqlite3_database_row_changes(VALUE self);
48
+ extern VALUE am_sqlite3_database_total_changes(VALUE self);
49
+ extern VALUE am_sqlite3_database_table_column_metadata(VALUE self, VALUE db_name, VALUE tbl_name, VALUE col_name);
50
+
51
+ extern VALUE am_sqlite3_database_prepare(VALUE self, VALUE rSQL);
52
+ extern VALUE am_sqlite3_database_register_trace_tap(VALUE self, VALUE tap);
53
+ extern VALUE am_sqlite3_database_register_profile_tap(VALUE self, VALUE tap);
54
+
55
+ /*----------------------------------------------------------------------
56
+ * Prototype for Amalgalite::SQLite3::Statement
57
+ *---------------------------------------------------------------------*/
58
+ extern VALUE cAS_Statement; /* class Amalgliate::SQLite3::Statement */
59
+
60
+ extern VALUE am_sqlite3_statement_alloc(VALUE klass);
61
+ extern void am_sqlite3_statement_free(am_sqlite3_stmt* );
62
+ extern VALUE am_sqlite3_statement_sql(VALUE self);
63
+ extern VALUE am_sqlite3_statement_close(VALUE self);
64
+ extern VALUE am_sqlite3_statement_step(VALUE self);
65
+ extern VALUE am_sqlite3_statement_column_count(VALUE self);
66
+ extern VALUE am_sqlite3_statement_column_name(VALUE self, VALUE index);
67
+ extern VALUE am_sqlite3_statement_column_decltype(VALUE self, VALUE index);
68
+ extern VALUE am_sqlite3_statement_column_type(VALUE self, VALUE index);
69
+ extern VALUE am_sqlite3_statement_column_text(VALUE self, VALUE index);
70
+ extern VALUE am_sqlite3_statement_column_int(VALUE self, VALUE index);
71
+ extern VALUE am_sqlite3_statement_column_int64(VALUE self, VALUE index);
72
+ extern VALUE am_sqlite3_statement_column_double(VALUE self, VALUE index);
73
+
74
+ extern VALUE am_sqlite3_statement_column_database_name(VALUE self, VALUE position);
75
+ extern VALUE am_sqlite3_statement_column_table_name(VALUE self, VALUE position);
76
+ extern VALUE am_sqlite3_statement_column_origin_name(VALUE self, VALUE position);
77
+
78
+ extern VALUE am_sqlite3_statement_reset(VALUE self);
79
+ extern VALUE am_sqlite3_statement_clear_bindings(VALUE self);
80
+ extern VALUE am_sqlite3_statement_bind_parameter_count(VALUE self);
81
+ extern VALUE am_sqlite3_statement_bind_parameter_index(VALUE self, VALUE parameter_name);
82
+ extern VALUE am_sqlite3_statement_remaining_sql(VALUE self);
83
+ extern VALUE am_sqlite3_statement_bind_text(VALUE self, VALUE position, VALUE value);
84
+ extern VALUE am_sqlite3_statement_bind_int(VALUE self, VALUE position, VALUE value);
85
+ extern VALUE am_sqlite3_statement_bind_int64(VALUE self, VALUE position, VALUE value);
86
+ extern VALUE am_sqlite3_statement_bind_double(VALUE self, VALUE position, VALUE value);
87
+ extern VALUE am_sqlite3_statement_bind_null(VALUE self, VALUE position);
88
+
89
+ /***********************************************************************
90
+ * Type conversion macros between sqlite data types and ruby types
91
+ **********************************************************************/
92
+
93
+ #define SQLINT64_2NUM(x) ( LL2NUM( x ) )
94
+ #define SQLUINT64_2NUM(x) ( ULL2NUM( x ) )
95
+ #define NUM2SQLINT64( obj ) ( NUM2LL( obj ) )
96
+ #define NUM2SQLUINT64( obj ) ( NUM2ULL( obj ) )
97
+ #endif
@@ -0,0 +1,179 @@
1
+ /* Generated by gen_constants.rb -- do not edit */
2
+
3
+ #include "amalgalite3.h";
4
+ void Init_amalgalite3_constants( )
5
+ {
6
+ /** :stopdoc:
7
+ * These calls are here just to allow for rdoc generation
8
+ * :startdoc:
9
+ */
10
+ VALUE ma = rb_define_module("Amalgalite");
11
+ VALUE mas = rb_define_module_under(ma, "SQLite3");
12
+
13
+ /*
14
+ * module encapsulating all the SQLite C extension constants
15
+ */
16
+ VALUE mC = rb_define_module_under( mas, "Constants");
17
+ /**
18
+ * module encapsulating the SQLite3 C extension constants for DataType
19
+ */
20
+ VALUE mC_DataType = rb_define_module_under(mC, "DataType");
21
+
22
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
23
+ rb_define_const(mC_DataType, "BLOB", INT2FIX(SQLITE_BLOB));
24
+
25
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
26
+ rb_define_const(mC_DataType, "FLOAT", INT2FIX(SQLITE_FLOAT));
27
+
28
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
29
+ rb_define_const(mC_DataType, "INTEGER", INT2FIX(SQLITE_INTEGER));
30
+
31
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
32
+ rb_define_const(mC_DataType, "NULL", INT2FIX(SQLITE_NULL));
33
+
34
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
35
+ rb_define_const(mC_DataType, "TEXT", INT2FIX(SQLITE_TEXT));
36
+
37
+ /**
38
+ * module encapsulating the SQLite3 C extension constants for Open
39
+ */
40
+ VALUE mC_Open = rb_define_module_under(mC, "Open");
41
+
42
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
43
+ rb_define_const(mC_Open, "CREATE", INT2FIX(SQLITE_OPEN_CREATE));
44
+
45
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
46
+ rb_define_const(mC_Open, "READONLY", INT2FIX(SQLITE_OPEN_READONLY));
47
+
48
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
49
+ rb_define_const(mC_Open, "READWRITE", INT2FIX(SQLITE_OPEN_READWRITE));
50
+
51
+ /**
52
+ * module encapsulating the SQLite3 C extension constants for ResultCode
53
+ */
54
+ VALUE mC_ResultCode = rb_define_module_under(mC, "ResultCode");
55
+
56
+ /* 4 -- Callback routine requested an abort */
57
+ rb_define_const(mC_ResultCode, "ABORT", INT2FIX(SQLITE_ABORT));
58
+
59
+ /* 23 -- Authorization denied */
60
+ rb_define_const(mC_ResultCode, "AUTH", INT2FIX(SQLITE_AUTH));
61
+
62
+ /* 5 -- The database file is locked */
63
+ rb_define_const(mC_ResultCode, "BUSY", INT2FIX(SQLITE_BUSY));
64
+
65
+ /* 14 -- Unable to open the database file */
66
+ rb_define_const(mC_ResultCode, "CANTOPEN", INT2FIX(SQLITE_CANTOPEN));
67
+
68
+ /* 19 -- Abort due to constraint violation */
69
+ rb_define_const(mC_ResultCode, "CONSTRAINT", INT2FIX(SQLITE_CONSTRAINT));
70
+
71
+ /* 11 -- The database disk image is malformed */
72
+ rb_define_const(mC_ResultCode, "CORRUPT", INT2FIX(SQLITE_CORRUPT));
73
+
74
+ /* 101 -- sqlite3_step() has finished executing */
75
+ rb_define_const(mC_ResultCode, "DONE", INT2FIX(SQLITE_DONE));
76
+
77
+ /* 16 -- Database is empty */
78
+ rb_define_const(mC_ResultCode, "EMPTY", INT2FIX(SQLITE_EMPTY));
79
+
80
+ /* 1 -- SQL error or missing database */
81
+ rb_define_const(mC_ResultCode, "ERROR", INT2FIX(SQLITE_ERROR));
82
+
83
+ /* 24 -- Auxiliary database format error */
84
+ rb_define_const(mC_ResultCode, "FORMAT", INT2FIX(SQLITE_FORMAT));
85
+
86
+ /* 13 -- Insertion failed because database is full */
87
+ rb_define_const(mC_ResultCode, "FULL", INT2FIX(SQLITE_FULL));
88
+
89
+ /* 2 -- Internal logic error in SQLite */
90
+ rb_define_const(mC_ResultCode, "INTERNAL", INT2FIX(SQLITE_INTERNAL));
91
+
92
+ /* 9 -- Operation terminated by sqlite3_interrupt() */
93
+ rb_define_const(mC_ResultCode, "INTERRUPT", INT2FIX(SQLITE_INTERRUPT));
94
+
95
+ /* 10 -- Some kind of disk I/O error occurred */
96
+ rb_define_const(mC_ResultCode, "IOERR", INT2FIX(SQLITE_IOERR));
97
+
98
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
99
+ rb_define_const(mC_ResultCode, "IOERR_BLOCKED", INT2FIX(SQLITE_IOERR_BLOCKED));
100
+
101
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
102
+ rb_define_const(mC_ResultCode, "IOERR_DELETE", INT2FIX(SQLITE_IOERR_DELETE));
103
+
104
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
105
+ rb_define_const(mC_ResultCode, "IOERR_DIR_FSYNC", INT2FIX(SQLITE_IOERR_DIR_FSYNC));
106
+
107
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
108
+ rb_define_const(mC_ResultCode, "IOERR_FSTAT", INT2FIX(SQLITE_IOERR_FSTAT));
109
+
110
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
111
+ rb_define_const(mC_ResultCode, "IOERR_FSYNC", INT2FIX(SQLITE_IOERR_FSYNC));
112
+
113
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
114
+ rb_define_const(mC_ResultCode, "IOERR_NOMEM", INT2FIX(SQLITE_IOERR_NOMEM));
115
+
116
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
117
+ rb_define_const(mC_ResultCode, "IOERR_RDLOCK", INT2FIX(SQLITE_IOERR_RDLOCK));
118
+
119
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
120
+ rb_define_const(mC_ResultCode, "IOERR_READ", INT2FIX(SQLITE_IOERR_READ));
121
+
122
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
123
+ rb_define_const(mC_ResultCode, "IOERR_SHORT_READ", INT2FIX(SQLITE_IOERR_SHORT_READ));
124
+
125
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
126
+ rb_define_const(mC_ResultCode, "IOERR_TRUNCATE", INT2FIX(SQLITE_IOERR_TRUNCATE));
127
+
128
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
129
+ rb_define_const(mC_ResultCode, "IOERR_UNLOCK", INT2FIX(SQLITE_IOERR_UNLOCK));
130
+
131
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
132
+ rb_define_const(mC_ResultCode, "IOERR_WRITE", INT2FIX(SQLITE_IOERR_WRITE));
133
+
134
+ /* 6 -- A table in the database is locked */
135
+ rb_define_const(mC_ResultCode, "LOCKED", INT2FIX(SQLITE_LOCKED));
136
+
137
+ /* 20 -- Data type mismatch */
138
+ rb_define_const(mC_ResultCode, "MISMATCH", INT2FIX(SQLITE_MISMATCH));
139
+
140
+ /* 21 -- Library used incorrectly */
141
+ rb_define_const(mC_ResultCode, "MISUSE", INT2FIX(SQLITE_MISUSE));
142
+
143
+ /* 22 -- Uses OS features not supported on host */
144
+ rb_define_const(mC_ResultCode, "NOLFS", INT2FIX(SQLITE_NOLFS));
145
+
146
+ /* 7 -- A malloc() failed */
147
+ rb_define_const(mC_ResultCode, "NOMEM", INT2FIX(SQLITE_NOMEM));
148
+
149
+ /* 26 -- File opened that is not a database file */
150
+ rb_define_const(mC_ResultCode, "NOTADB", INT2FIX(SQLITE_NOTADB));
151
+
152
+ /* 12 -- NOT USED. Table or record not found */
153
+ rb_define_const(mC_ResultCode, "NOTFOUND", INT2FIX(SQLITE_NOTFOUND));
154
+
155
+ /* no meaningful autogenerated documentation -- constant is self explanatory ?*/
156
+ rb_define_const(mC_ResultCode, "OK", INT2FIX(SQLITE_OK));
157
+
158
+ /* 3 -- Access permission denied */
159
+ rb_define_const(mC_ResultCode, "PERM", INT2FIX(SQLITE_PERM));
160
+
161
+ /* 15 -- NOT USED. Database lock protocol error */
162
+ rb_define_const(mC_ResultCode, "PROTOCOL", INT2FIX(SQLITE_PROTOCOL));
163
+
164
+ /* 25 -- 2nd parameter to sqlite3_bind out of range */
165
+ rb_define_const(mC_ResultCode, "RANGE", INT2FIX(SQLITE_RANGE));
166
+
167
+ /* 8 -- Attempt to write a readonly database */
168
+ rb_define_const(mC_ResultCode, "READONLY", INT2FIX(SQLITE_READONLY));
169
+
170
+ /* 100 -- sqlite3_step() has another row ready */
171
+ rb_define_const(mC_ResultCode, "ROW", INT2FIX(SQLITE_ROW));
172
+
173
+ /* 17 -- The database schema changed */
174
+ rb_define_const(mC_ResultCode, "SCHEMA", INT2FIX(SQLITE_SCHEMA));
175
+
176
+ /* 18 -- String or BLOB exceeds size limit */
177
+ rb_define_const(mC_ResultCode, "TOOBIG", INT2FIX(SQLITE_TOOBIG));
178
+
179
+ }