amalgalite 0.1.0

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.
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
+ }