do_sqlite3 0.10.1.1-java → 0.10.2-java

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.
data/ChangeLog.markdown CHANGED
@@ -1,4 +1,7 @@
1
- ## 0.10.2 (unreleased, in git)
1
+ ## 0.10.2 2010-05-19
2
+ * Make Encoding.default_internal aware
3
+ * Rework logging for making callbacks possible
4
+ * Remove handling Object types directly
2
5
 
3
6
  ## 0.10.1.1 2010-01-24
4
7
 
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ JRUBY = RUBY_PLATFORM =~ /java/
11
11
  IRONRUBY = defined?(RUBY_ENGINE) && RUBY_ENGINE == 'ironruby'
12
12
  WINDOWS = Gem.win_platform? || (JRUBY && ENV_JAVA['os.name'] =~ /windows/i)
13
13
  SUDO = WINDOWS ? '' : ('sudo' unless ENV['SUDOLESS'])
14
- BINARY_VERSION = '3_6_21'
14
+ BINARY_VERSION = '3_6_23_1'
15
15
 
16
16
  CLEAN.include(%w[ {tmp,pkg}/ **/*.{o,so,bundle,jar,log,a,gem,dSYM,obj,pdb,exp,DS_Store,rbc,db} ext/do_sqlite3/Makefile ext-java/target ])
17
17
 
@@ -35,7 +35,7 @@ begin
35
35
  # and modify dependencies and extensions appropriately
36
36
  gem.extensions << 'ext/do_sqlite3/extconf.rb'
37
37
 
38
- gem.add_dependency 'data_objects', '0.10.1'
38
+ gem.add_dependency 'data_objects', DataObjects::Sqlite3::VERSION
39
39
 
40
40
  gem.add_development_dependency 'bacon', '~>1.1'
41
41
  gem.add_development_dependency 'rake-compiler', '~>0.7'
@@ -1,69 +1,13 @@
1
- #include <ruby.h>
2
- #include <string.h>
3
- #include <math.h>
4
- #include <time.h>
5
- #include <locale.h>
6
- #include <sqlite3.h>
7
- #include "compat.h"
1
+ #include "do_sqlite3.h"
8
2
  #include "error.h"
9
-
10
- #ifdef HAVE_RUBY_ENCODING_H
11
- #include <ruby/encoding.h>
12
-
13
- #define DO_STR_NEW2(str, encoding) \
14
- ({ \
15
- VALUE _string = rb_str_new2((const char *)str); \
16
- if(encoding != -1) { \
17
- rb_enc_associate_index(_string, encoding); \
18
- } \
19
- _string; \
20
- })
21
-
22
- #define DO_STR_NEW(str, len, encoding) \
23
- ({ \
24
- VALUE _string = rb_str_new((const char *)str, (long)len); \
25
- if(encoding != -1) { \
26
- rb_enc_associate_index(_string, encoding); \
27
- } \
28
- _string; \
29
- })
30
-
31
- #else
32
-
33
- #define DO_STR_NEW2(str, encoding) \
34
- rb_str_new2((const char *)str)
35
-
36
- #define DO_STR_NEW(str, len, encoding) \
37
- rb_str_new((const char *)str, (long)len)
38
- #endif
39
-
40
-
41
- #define ID_CONST_GET rb_intern("const_get")
42
- #define ID_PATH rb_intern("path")
43
- #define ID_NEW rb_intern("new")
44
- #define ID_ESCAPE rb_intern("escape_sql")
45
- #define ID_QUERY rb_intern("query")
46
-
47
- #define RUBY_CLASS(name) rb_const_get(rb_cObject, rb_intern(name))
48
- #define CONST_GET(scope, constant) (rb_funcall(scope, ID_CONST_GET, 1, rb_str_new2(constant)))
49
- #define SQLITE3_CLASS(klass, parent) (rb_define_class_under(mSqlite3, klass, parent))
50
-
51
- #ifdef _WIN32
52
- #define do_int64 signed __int64
53
- #else
54
- #define do_int64 signed long long int
55
- #endif
56
-
57
- #ifndef HAVE_SQLITE3_PREPARE_V2
58
- #define sqlite3_prepare_v2 sqlite3_prepare
59
- #endif
60
-
61
3
  // To store rb_intern values
4
+
5
+ static ID ID_NEW;
62
6
  static ID ID_NEW_DATE;
7
+ static ID ID_CONST_GET;
63
8
  static ID ID_RATIONAL;
64
- static ID ID_LOGGER;
65
- static ID ID_DEBUG;
66
- static ID ID_LEVEL;
9
+ static ID ID_ESCAPE;
10
+ static ID ID_LOG;
67
11
 
68
12
  static VALUE mExtlib;
69
13
 
@@ -73,6 +17,8 @@ static VALUE cDO_Connection;
73
17
  static VALUE cDO_Command;
74
18
  static VALUE cDO_Result;
75
19
  static VALUE cDO_Reader;
20
+ static VALUE cDO_Logger;
21
+ static VALUE cDO_Logger_Message;
76
22
 
77
23
  static VALUE rb_cDate;
78
24
  static VALUE rb_cDateTime;
@@ -84,8 +30,6 @@ static VALUE cConnection;
84
30
  static VALUE cCommand;
85
31
  static VALUE cResult;
86
32
  static VALUE cReader;
87
-
88
- static VALUE eArgumentError;
89
33
  static VALUE eConnectionError;
90
34
  static VALUE eDataError;
91
35
 
@@ -120,28 +64,16 @@ static int jd_from_date(int year, int month, int day) {
120
64
  return (int) (floor(365.25 * (year + 4716)) + floor(30.6001 * (month + 1)) + day + b - 1524);
121
65
  }
122
66
 
123
- static void data_objects_debug(VALUE string, struct timeval* start) {
67
+ static void data_objects_debug(VALUE connection, VALUE string, struct timeval* start) {
124
68
  struct timeval stop;
125
- char *message;
126
-
127
- const char *query = rb_str_ptr_readonly(string);
128
- size_t length = rb_str_len(string);
129
- char total_time[32];
130
- do_int64 duration = 0;
131
-
132
- VALUE logger = rb_funcall(mSqlite3, ID_LOGGER, 0);
133
- int log_level = NUM2INT(rb_funcall(logger, ID_LEVEL, 0));
69
+ VALUE message;
134
70
 
135
- if (0 == log_level) {
136
- gettimeofday(&stop, NULL);
71
+ gettimeofday(&stop, NULL);
72
+ do_int64 duration = (stop.tv_sec - start->tv_sec) * 1000000 + stop.tv_usec - start->tv_usec;
137
73
 
138
- duration = (stop.tv_sec - start->tv_sec) * 1000000 + stop.tv_usec - start->tv_usec;
74
+ message = rb_funcall(cDO_Logger_Message, ID_NEW, 3, string, rb_time_new(start->tv_sec, start->tv_usec), INT2NUM(duration));
139
75
 
140
- snprintf(total_time, 32, "%.6f", duration / 1000000.0);
141
- message = (char *)calloc(length + strlen(total_time) + 4, sizeof(char));
142
- snprintf(message, length + strlen(total_time) + 4, "(%s) %s", total_time, query);
143
- rb_funcall(logger, ID_DEBUG, 1, rb_str_new(message, length + strlen(total_time) + 3));
144
- }
76
+ rb_funcall(connection, ID_LOG, 1, message);
145
77
  }
146
78
 
147
79
  static void raise_error(VALUE self, sqlite3 *result, VALUE query) {
@@ -330,6 +262,12 @@ static VALUE typecast(sqlite3_stmt *stmt, int i, VALUE type, int encoding) {
330
262
  return ruby_value;
331
263
  }
332
264
 
265
+ #ifdef HAVE_RUBY_ENCODING_H
266
+ rb_encoding * internal_encoding = rb_default_internal_encoding();
267
+ #else
268
+ void * internal_encoding = NULL;
269
+ #endif
270
+
333
271
  if(type == Qnil) {
334
272
  switch(original_type) {
335
273
  case SQLITE_INTEGER: {
@@ -354,7 +292,7 @@ static VALUE typecast(sqlite3_stmt *stmt, int i, VALUE type, int encoding) {
354
292
  if (type == rb_cInteger) {
355
293
  return LL2NUM(sqlite3_column_int64(stmt, i));
356
294
  } else if (type == rb_cString) {
357
- return DO_STR_NEW((char*)sqlite3_column_text(stmt, i), length, encoding);
295
+ return DO_STR_NEW((char*)sqlite3_column_text(stmt, i), length, encoding, internal_encoding);
358
296
  } else if (type == rb_cFloat) {
359
297
  return rb_float_new(sqlite3_column_double(stmt, i));
360
298
  } else if (type == rb_cBigDecimal) {
@@ -371,12 +309,10 @@ static VALUE typecast(sqlite3_stmt *stmt, int i, VALUE type, int encoding) {
371
309
  return rb_funcall(rb_cByteArray, ID_NEW, 1, rb_str_new((char*)sqlite3_column_blob(stmt, i), length));
372
310
  } else if (type == rb_cClass) {
373
311
  return rb_funcall(mDO, rb_intern("full_const_get"), 1, rb_str_new((char*)sqlite3_column_text(stmt, i), length));
374
- } else if (type == rb_cObject) {
375
- return rb_marshal_load(rb_str_new((char*)sqlite3_column_text(stmt, i), length));
376
312
  } else if (type == rb_cNilClass) {
377
313
  return Qnil;
378
314
  } else {
379
- return DO_STR_NEW((char*)sqlite3_column_text(stmt, i), length, encoding);
315
+ return DO_STR_NEW((char*)sqlite3_column_text(stmt, i), length, encoding, internal_encoding);
380
316
  }
381
317
  }
382
318
 
@@ -385,7 +321,7 @@ static VALUE typecast(sqlite3_stmt *stmt, int i, VALUE type, int encoding) {
385
321
  #define FLAG_PRESENT(query_values, flag) !NIL_P(rb_hash_aref(query_values, flag))
386
322
 
387
323
  static int flags_from_uri(VALUE uri) {
388
- VALUE query_values = rb_funcall(uri, ID_QUERY, 0);
324
+ VALUE query_values = rb_funcall(uri, rb_intern("query"), 0);
389
325
 
390
326
  int flags = 0;
391
327
 
@@ -425,7 +361,7 @@ static VALUE cConnection_initialize(VALUE self, VALUE uri) {
425
361
  VALUE path;
426
362
  sqlite3 *db;
427
363
 
428
- path = rb_funcall(uri, ID_PATH, 0);
364
+ path = rb_funcall(uri, rb_intern("path"), 0);
429
365
 
430
366
  #ifdef HAVE_SQLITE3_OPEN_V2
431
367
  ret = sqlite3_open_v2(rb_str_ptr_readonly(path), &db, flags_from_uri(uri), 0);
@@ -488,11 +424,11 @@ static VALUE cCommand_set_types(int argc, VALUE *argv, VALUE self) {
488
424
  if(TYPE(sub_entry) == T_CLASS) {
489
425
  rb_ary_push(type_strings, sub_entry);
490
426
  } else {
491
- rb_raise(eArgumentError, "Invalid type given");
427
+ rb_raise(rb_eArgError, "Invalid type given");
492
428
  }
493
429
  }
494
430
  } else {
495
- rb_raise(eArgumentError, "Invalid type given");
431
+ rb_raise(rb_eArgError, "Invalid type given");
496
432
  }
497
433
  }
498
434
 
@@ -570,7 +506,7 @@ static VALUE cCommand_execute_non_query(int argc, VALUE *argv, VALUE self) {
570
506
  if ( status != SQLITE_OK ) {
571
507
  raise_error(self, db, query);
572
508
  }
573
- data_objects_debug(query, &start);
509
+ data_objects_debug(connection, query, &start);
574
510
 
575
511
  affected_rows = sqlite3_changes(db);
576
512
  insert_id = sqlite3_last_insert_rowid(db);
@@ -602,7 +538,7 @@ static VALUE cCommand_execute_reader(int argc, VALUE *argv, VALUE self) {
602
538
 
603
539
  gettimeofday(&start, NULL);
604
540
  status = sqlite3_prepare_v2(db, rb_str_ptr_readonly(query), -1, &sqlite3_reader, 0);
605
- data_objects_debug(query, &start);
541
+ data_objects_debug(connection, query, &start);
606
542
 
607
543
  if ( status != SQLITE_OK ) {
608
544
  raise_error(self, db, query);
@@ -624,7 +560,7 @@ static VALUE cCommand_execute_reader(int argc, VALUE *argv, VALUE self) {
624
560
  // Whoops... wrong number of types passed to set_types. Close the reader and raise
625
561
  // and error
626
562
  rb_funcall(reader, rb_intern("close"), 0);
627
- rb_raise(eArgumentError, "Field-count mismatch. Expected %ld fields, but the query yielded %d", RARRAY_LEN(field_types), field_count);
563
+ rb_raise(rb_eArgError, "Field-count mismatch. Expected %ld fields, but the query yielded %d", RARRAY_LEN(field_types), field_count);
628
564
  }
629
565
 
630
566
  for ( i = 0; i < field_count; i++ ) {
@@ -720,13 +656,14 @@ static VALUE cReader_field_count(VALUE self) {
720
656
  void Init_do_sqlite3() {
721
657
  rb_require("bigdecimal");
722
658
  rb_require("date");
659
+ rb_require("data_objects");
723
660
 
724
- // Get references classes needed for Date/Time parsing
725
- rb_cDate = RUBY_CLASS("Date");
726
- rb_cDateTime = RUBY_CLASS( "DateTime");
727
- rb_cBigDecimal = RUBY_CLASS("BigDecimal");
661
+ ID_CONST_GET = rb_intern("const_get");
728
662
 
729
- rb_funcall(rb_mKernel, rb_intern("require"), 1, rb_str_new2("data_objects"));
663
+ // Get references classes needed for Date/Time parsing
664
+ rb_cDate = CONST_GET(rb_mKernel, "Date");
665
+ rb_cDateTime = CONST_GET(rb_mKernel, "DateTime");
666
+ rb_cBigDecimal = CONST_GET(rb_mKernel, "BigDecimal");
730
667
 
731
668
  #ifdef RUBY_LESS_THAN_186
732
669
  ID_NEW_DATE = rb_intern("new0");
@@ -734,9 +671,9 @@ void Init_do_sqlite3() {
734
671
  ID_NEW_DATE = rb_intern("new!");
735
672
  #endif
736
673
  ID_RATIONAL = rb_intern("Rational");
737
- ID_LOGGER = rb_intern("logger");
738
- ID_DEBUG = rb_intern("debug");
739
- ID_LEVEL = rb_intern("level");
674
+ ID_NEW = rb_intern("new");
675
+ ID_ESCAPE = rb_intern("escape_sql");
676
+ ID_LOG = rb_intern("log");
740
677
 
741
678
  // Get references to the Extlib module
742
679
  mExtlib = CONST_GET(rb_mKernel, "Extlib");
@@ -749,15 +686,16 @@ void Init_do_sqlite3() {
749
686
  cDO_Command = CONST_GET(mDO, "Command");
750
687
  cDO_Result = CONST_GET(mDO, "Result");
751
688
  cDO_Reader = CONST_GET(mDO, "Reader");
689
+ cDO_Logger = CONST_GET(mDO, "Logger");
690
+ cDO_Logger_Message = CONST_GET(cDO_Logger, "Message");
752
691
 
753
692
  // Initialize the DataObjects::Sqlite3 module, and define its classes
754
693
  mSqlite3 = rb_define_module_under(mDO, "Sqlite3");
755
694
 
756
- eArgumentError = CONST_GET(rb_mKernel, "ArgumentError");
757
695
  eConnectionError = CONST_GET(mDO, "ConnectionError");
758
696
  eDataError = CONST_GET(mDO, "DataError");
759
697
 
760
- cConnection = SQLITE3_CLASS("Connection", cDO_Connection);
698
+ cConnection = DRIVER_CLASS("Connection", cDO_Connection);
761
699
  rb_define_method(cConnection, "initialize", cConnection_initialize, 1);
762
700
  rb_define_method(cConnection, "dispose", cConnection_dispose, 0);
763
701
  rb_define_method(cConnection, "quote_boolean", cConnection_quote_boolean, 1);
@@ -765,20 +703,41 @@ void Init_do_sqlite3() {
765
703
  rb_define_method(cConnection, "quote_byte_array", cConnection_quote_byte_array, 1);
766
704
  rb_define_method(cConnection, "character_set", cConnection_character_set, 0);
767
705
 
768
- cCommand = SQLITE3_CLASS("Command", cDO_Command);
706
+ cCommand = DRIVER_CLASS("Command", cDO_Command);
769
707
  rb_define_method(cCommand, "set_types", cCommand_set_types, -1);
770
708
  rb_define_method(cCommand, "execute_non_query", cCommand_execute_non_query, -1);
771
709
  rb_define_method(cCommand, "execute_reader", cCommand_execute_reader, -1);
772
710
 
773
- cResult = SQLITE3_CLASS("Result", cDO_Result);
711
+ cResult = DRIVER_CLASS("Result", cDO_Result);
774
712
 
775
- cReader = SQLITE3_CLASS("Reader", cDO_Reader);
713
+ cReader = DRIVER_CLASS("Reader", cDO_Reader);
776
714
  rb_define_method(cReader, "close", cReader_close, 0);
777
715
  rb_define_method(cReader, "next!", cReader_next, 0);
778
716
  rb_define_method(cReader, "values", cReader_values, 0);
779
717
  rb_define_method(cReader, "fields", cReader_fields, 0);
780
718
  rb_define_method(cReader, "field_count", cReader_field_count, 0);
781
719
 
720
+ rb_global_variable(&ID_NEW_DATE);
721
+ rb_global_variable(&ID_RATIONAL);
722
+ rb_global_variable(&ID_CONST_GET);
723
+ rb_global_variable(&ID_ESCAPE);
724
+ rb_global_variable(&ID_LOG);
725
+ rb_global_variable(&ID_NEW);
726
+
727
+ rb_global_variable(&rb_cDate);
728
+ rb_global_variable(&rb_cDateTime);
729
+ rb_global_variable(&rb_cBigDecimal);
730
+ rb_global_variable(&rb_cByteArray);
731
+
732
+ rb_global_variable(&mDO);
733
+ rb_global_variable(&cDO_Logger_Message);
734
+
735
+ rb_global_variable(&cResult);
736
+ rb_global_variable(&cReader);
737
+
738
+ rb_global_variable(&eConnectionError);
739
+ rb_global_variable(&eDataError);
740
+
782
741
  OPEN_FLAG_READONLY = rb_str_new2("read_only");
783
742
  rb_global_variable(&OPEN_FLAG_READONLY);
784
743
  OPEN_FLAG_READWRITE = rb_str_new2("read_write");
@@ -790,4 +749,5 @@ void Init_do_sqlite3() {
790
749
  OPEN_FLAG_FULL_MUTEX = rb_str_new2("full_mutex");
791
750
  rb_global_variable(&OPEN_FLAG_FULL_MUTEX);
792
751
 
752
+ Init_do_sqlite3_extension();
793
753
  }
@@ -0,0 +1,65 @@
1
+ #ifndef DO_SQLITE3_H
2
+ #define DO_SQLITE3_H
3
+
4
+ #include <ruby.h>
5
+ #include <string.h>
6
+ #include <math.h>
7
+ #include <time.h>
8
+ #include <locale.h>
9
+ #include <sqlite3.h>
10
+ #include "compat.h"
11
+
12
+ #ifdef HAVE_RUBY_ENCODING_H
13
+ #include <ruby/encoding.h>
14
+
15
+ #define DO_STR_NEW2(str, encoding, internal_encoding) \
16
+ ({ \
17
+ VALUE _string = rb_str_new2((const char *)str); \
18
+ if(encoding != -1) { \
19
+ rb_enc_associate_index(_string, encoding); \
20
+ } \
21
+ if(internal_encoding) { \
22
+ _string = rb_str_export_to_enc(_string, internal_encoding); \
23
+ } \
24
+ _string; \
25
+ })
26
+
27
+ #define DO_STR_NEW(str, len, encoding, internal_encoding) \
28
+ ({ \
29
+ VALUE _string = rb_str_new((const char *)str, (long)len); \
30
+ if(encoding != -1) { \
31
+ rb_enc_associate_index(_string, encoding); \
32
+ } \
33
+ if(internal_encoding) { \
34
+ _string = rb_str_export_to_enc(_string, internal_encoding); \
35
+ } \
36
+ _string; \
37
+ })
38
+
39
+ #else
40
+
41
+ #define DO_STR_NEW2(str, encoding, internal_encoding) \
42
+ rb_str_new2((const char *)str)
43
+
44
+ #define DO_STR_NEW(str, len, encoding, internal_encoding) \
45
+ rb_str_new((const char *)str, (long)len)
46
+ #endif
47
+
48
+ #define CONST_GET(scope, constant) (rb_funcall(scope, ID_CONST_GET, 1, rb_str_new2(constant)))
49
+ #define DRIVER_CLASS(klass, parent) (rb_define_class_under(mSqlite3, klass, parent))
50
+
51
+ #ifdef _WIN32
52
+ #define do_int64 signed __int64
53
+ #else
54
+ #define do_int64 signed long long int
55
+ #endif
56
+
57
+ #ifndef HAVE_SQLITE3_PREPARE_V2
58
+ #define sqlite3_prepare_v2 sqlite3_prepare
59
+ #endif
60
+
61
+ static ID ID_CONST_GET;
62
+
63
+ void Init_do_sqlite3_extension();
64
+
65
+ #endif
@@ -0,0 +1,78 @@
1
+ #include "do_sqlite3.h"
2
+
3
+ static VALUE ID_CONST_GET;
4
+ static VALUE mDO;
5
+ static VALUE mSqlite3;
6
+ static VALUE eConnectionError;
7
+ static VALUE cDO_Extension;
8
+ static VALUE cExtension;
9
+
10
+ /*****************************************************/
11
+ /* File used for providing extensions on the default */
12
+ /* API that are driver specific. */
13
+ /*****************************************************/
14
+ static VALUE cExtension_enable_load_extension(VALUE self, VALUE on) {
15
+ VALUE id_connection = rb_intern("connection");
16
+
17
+ VALUE connection = rb_funcall(self, id_connection, 0);
18
+ sqlite3 *db;
19
+ int status;
20
+
21
+ if (connection == Qnil) { return Qfalse; }
22
+
23
+ // Retrieve the actual connection from the
24
+ connection = rb_iv_get(self, "@connection");
25
+
26
+ if (connection == Qnil) { return Qfalse; }
27
+
28
+ db = DATA_PTR(connection);
29
+
30
+ if(db == NULL) { return Qfalse; }
31
+
32
+ status = sqlite3_enable_load_extension(db, on == Qtrue ? 1 : 0);
33
+
34
+ if ( status != SQLITE_OK ) {
35
+ rb_raise(eConnectionError, "Couldn't enable extension loading");
36
+ }
37
+ return Qtrue;
38
+ }
39
+
40
+ static VALUE cExtension_load_extension(VALUE self, VALUE path) {
41
+ VALUE id_connection = rb_intern("connection");
42
+
43
+ VALUE connection = rb_funcall(self, id_connection, 0);
44
+ sqlite3 *db;
45
+ const char *extension_path = rb_str_ptr_readonly(path);
46
+ char* errmsg = sqlite3_malloc(1024);
47
+ int status;
48
+
49
+ if (connection == Qnil) { return Qfalse; }
50
+
51
+ // Retrieve the actual connection from the
52
+ connection = rb_iv_get(self, "@connection");
53
+
54
+ if (connection == Qnil) { return Qfalse; }
55
+
56
+ db = DATA_PTR(connection);
57
+
58
+ if(db == NULL) { return Qfalse; }
59
+
60
+ status = sqlite3_load_extension(db, extension_path, 0, &errmsg);
61
+
62
+ if ( status != SQLITE_OK ) {
63
+ VALUE errexp = rb_exc_new2(eConnectionError, errmsg);
64
+ sqlite3_free(errmsg);
65
+ rb_exc_raise(errexp);
66
+ }
67
+ return Qtrue;
68
+ }
69
+
70
+ void Init_do_sqlite3_extension() {
71
+ ID_CONST_GET = rb_intern("const_get");
72
+ mDO = CONST_GET(rb_mKernel, "DataObjects");
73
+ cDO_Extension = CONST_GET(mDO, "Extension");
74
+ mSqlite3 = rb_define_module_under(mDO, "Sqlite3");
75
+ cExtension = DRIVER_CLASS("Extension", cDO_Extension);
76
+ rb_define_method(cExtension, "load_extension", cExtension_load_extension, 1);
77
+ rb_define_method(cExtension, "enable_load_extension", cExtension_enable_load_extension, 1);
78
+ }
@@ -1,3 +1,6 @@
1
+ #ifndef DO_SQLITE3_ERROR_H
2
+ #define DO_SQLITE3_ERROR_H
3
+
1
4
  static struct errcodes {
2
5
  int error_no;
3
6
  const char *error_name;
@@ -104,3 +107,5 @@ static struct errcodes {
104
107
  #endif
105
108
  {0, NULL, NULL}
106
109
  };
110
+
111
+ #endif
Binary file
@@ -1,5 +1,5 @@
1
1
  module DataObjects
2
2
  module Sqlite3
3
- VERSION = '0.10.1.1'.freeze
3
+ VERSION = '0.10.2'
4
4
  end
5
5
  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/encoding_spec'
5
+
6
+ describe DataObjects::Sqlite3::Connection do
7
+ behaves_like 'returning correctly encoded strings for the default database encoding'
8
+ behaves_like 'returning correctly encoded strings for the default internal encoding'
9
+ end
data/spec/result_spec.rb CHANGED
@@ -15,5 +15,5 @@ describe DataObjects::Sqlite3::Result do
15
15
  end
16
16
 
17
17
  describe DataObjects::Sqlite3::Result do
18
- behaves_like 'a Result which returns inserted keys'
18
+ behaves_like 'a Result which returns inserted key with sequences'
19
19
  end
data/spec/spec_helper.rb CHANGED
@@ -61,9 +61,8 @@ module DataObjectsSpecHelpers
61
61
 
62
62
  conn.create_command(<<-EOF).execute_non_query
63
63
  CREATE TABLE "invoices" (
64
- "id" SERIAL,
65
64
  "invoice_number" varchar(50) NOT NULL,
66
- PRIMARY KEY ("id")
65
+ PRIMARY KEY ("invoice_number")
67
66
  );
68
67
  EOF
69
68
 
data/tasks/compile.rake CHANGED
@@ -56,7 +56,7 @@ begin
56
56
  ext.classpath = '../do_jdbc/lib/do_jdbc_internal.jar'
57
57
  ext.java_compiling do |gem|
58
58
  gem.add_dependency 'jdbc-sqlite3', '>=3.5.8'
59
- gem.add_dependency 'do_jdbc', '0.10.1'
59
+ gem.add_dependency 'do_jdbc', '0.10.2'
60
60
  end
61
61
  end
62
62
  rescue LoadError
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: do_sqlite3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1.1
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 10
8
+ - 2
9
+ version: 0.10.2
5
10
  platform: java
6
11
  authors:
7
12
  - Dirkjan Bussink
@@ -9,59 +14,77 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-01-31 00:00:00 +01:00
17
+ date: 2010-05-19 00:00:00 +02:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: data_objects
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - "="
22
26
  - !ruby/object:Gem::Version
23
- version: 0.10.1
24
- version:
27
+ segments:
28
+ - 0
29
+ - 10
30
+ - 2
31
+ version: 0.10.2
32
+ type: :runtime
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
35
  name: bacon
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
30
38
  requirements:
31
39
  - - ~>
32
40
  - !ruby/object:Gem::Version
41
+ segments:
42
+ - 1
43
+ - 1
33
44
  version: "1.1"
34
- version:
45
+ type: :development
46
+ version_requirements: *id002
35
47
  - !ruby/object:Gem::Dependency
36
48
  name: rake-compiler
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
49
+ prerelease: false
50
+ requirement: &id003 !ruby/object:Gem::Requirement
40
51
  requirements:
41
52
  - - ~>
42
53
  - !ruby/object:Gem::Version
54
+ segments:
55
+ - 0
56
+ - 7
43
57
  version: "0.7"
44
- version:
58
+ type: :development
59
+ version_requirements: *id003
45
60
  - !ruby/object:Gem::Dependency
46
61
  name: jdbc-sqlite3
47
- type: :runtime
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
62
+ prerelease: false
63
+ requirement: &id004 !ruby/object:Gem::Requirement
50
64
  requirements:
51
65
  - - ">="
52
66
  - !ruby/object:Gem::Version
67
+ segments:
68
+ - 3
69
+ - 5
70
+ - 8
53
71
  version: 3.5.8
54
- version:
72
+ type: :runtime
73
+ version_requirements: *id004
55
74
  - !ruby/object:Gem::Dependency
56
75
  name: do_jdbc
57
- type: :runtime
58
- version_requirement:
59
- version_requirements: !ruby/object:Gem::Requirement
76
+ prerelease: false
77
+ requirement: &id005 !ruby/object:Gem::Requirement
60
78
  requirements:
61
79
  - - "="
62
80
  - !ruby/object:Gem::Version
63
- version: 0.10.1
64
- version:
81
+ segments:
82
+ - 0
83
+ - 10
84
+ - 2
85
+ version: 0.10.2
86
+ type: :runtime
87
+ version_requirements: *id005
65
88
  description: Implements the DataObjects API for Sqlite3
66
89
  email: d.bussink@gmail.com
67
90
  executables: []
@@ -78,6 +101,7 @@ files:
78
101
  - lib/do_sqlite3.rb
79
102
  - spec/command_spec.rb
80
103
  - spec/connection_spec.rb
104
+ - spec/encoding_spec.rb
81
105
  - spec/reader_spec.rb
82
106
  - spec/result_spec.rb
83
107
  - spec/spec_helper.rb
@@ -101,7 +125,9 @@ files:
101
125
  - tasks/spec.rake
102
126
  - ext/do_sqlite3/extconf.rb
103
127
  - ext/do_sqlite3/do_sqlite3.c
128
+ - ext/do_sqlite3/do_sqlite3_extension.c
104
129
  - ext/do_sqlite3/compat.h
130
+ - ext/do_sqlite3/do_sqlite3.h
105
131
  - ext/do_sqlite3/error.h
106
132
  - LICENSE
107
133
  - Rakefile
@@ -121,24 +147,27 @@ required_ruby_version: !ruby/object:Gem::Requirement
121
147
  requirements:
122
148
  - - ">="
123
149
  - !ruby/object:Gem::Version
150
+ segments:
151
+ - 0
124
152
  version: "0"
125
- version:
126
153
  required_rubygems_version: !ruby/object:Gem::Requirement
127
154
  requirements:
128
155
  - - ">="
129
156
  - !ruby/object:Gem::Version
157
+ segments:
158
+ - 0
130
159
  version: "0"
131
- version:
132
160
  requirements: []
133
161
 
134
162
  rubyforge_project: dorb
135
- rubygems_version: 1.3.5
163
+ rubygems_version: 1.3.6
136
164
  signing_key:
137
165
  specification_version: 3
138
166
  summary: DataObjects Sqlite3 Driver
139
167
  test_files:
140
168
  - spec/command_spec.rb
141
169
  - spec/connection_spec.rb
170
+ - spec/encoding_spec.rb
142
171
  - spec/reader_spec.rb
143
172
  - spec/result_spec.rb
144
173
  - spec/spec_helper.rb