dmRuby 1.0.5 → 1.0.6
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.
- checksums.yaml +4 -4
- data/ChangeLogs.md +10 -0
- data/dmRuby-1.0.6.gem +0 -0
- data/ext/result.c +4 -4
- data/ext/statement.c +10 -41
- data/lib/dm/version.rb +1 -1
- metadata +3 -3
- data/dmRuby-1.0.5.gem +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 16c17975a7c35617e5a27459e3f4bff7070a7bfac2d788019c2e9d999ec15ed2
|
|
4
|
+
data.tar.gz: 13be646ef94149926f1adc7bc539a013603dcadf9aaeafe53b1da87a64b732c0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8600e17b7285807a567cfacc749b9645428626eec4f3301442a1d2c2a94728e93b01ed4572039e68351252b26bda50c3d512c67f40b30ee849e1a821a125cc21
|
|
7
|
+
data.tar.gz: 70fb7211153bc57809bc82b86aa80bd0e578b208b3f7b0a1ba11590e53b69c9c835d14cde417d18b68bfb2433d670b1f07c8d9437015fe11b65962c19811d0b3
|
data/ChangeLogs.md
CHANGED
data/dmRuby-1.0.6.gem
ADDED
|
Binary file
|
data/ext/result.c
CHANGED
|
@@ -111,18 +111,18 @@ static void *nogvl_get_col_desc(void *ptr) {
|
|
|
111
111
|
(dpointer)&(wrapper->col_desc[iParam].length), 0, NULL);
|
|
112
112
|
if(!DSQL_SUCCEEDED(rt))
|
|
113
113
|
return (void*)Qfalse;
|
|
114
|
-
wrapper->result[iParam] = (char*)xmalloc(wrapper->col_desc[iParam].length+
|
|
114
|
+
wrapper->result[iParam] = (char*)xmalloc(wrapper->col_desc[iParam].length * 2 + 1);
|
|
115
115
|
if(wrapper->col_desc[iParam].sql_type == DSQL_BINARY || wrapper->col_desc[iParam].sql_type == DSQL_VARBINARY)
|
|
116
116
|
{
|
|
117
117
|
rt = dpi_bind_col(wrapper->statement, (udint2)iParam + 1, DSQL_C_BINARY,
|
|
118
118
|
(dpointer)wrapper->result[iParam],
|
|
119
|
-
wrapper->col_desc[iParam].length + 1, &wrapper->length[iParam]);
|
|
119
|
+
wrapper->col_desc[iParam].length * 2 + 1, &wrapper->length[iParam]);
|
|
120
120
|
}
|
|
121
121
|
else
|
|
122
122
|
{
|
|
123
123
|
rt = dpi_bind_col(wrapper->statement, (udint2)iParam + 1, DSQL_C_NCHAR,
|
|
124
124
|
(dpointer)wrapper->result[iParam],
|
|
125
|
-
wrapper->col_desc[iParam].length + 1, &wrapper->length[iParam]);
|
|
125
|
+
wrapper->col_desc[iParam].length * 2 + 1, &wrapper->length[iParam]);
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
}
|
|
@@ -550,7 +550,7 @@ static VALUE rb_dm_result_fetch_row(VALUE self,const result_each_args *args)
|
|
|
550
550
|
|
|
551
551
|
for (i = 0; i < wrapper->numberOfFields; i++) {
|
|
552
552
|
VALUE field = rb_dm_result_fetch_field(self, i, args->symbolizeKeys);
|
|
553
|
-
if (row[i] && fieldLengths[i]
|
|
553
|
+
if (row[i] && fieldLengths[i]>=0) {
|
|
554
554
|
VALUE val = Qnil;
|
|
555
555
|
sdint2 type = wrapper->col_desc[i].sql_type;
|
|
556
556
|
|
data/ext/statement.c
CHANGED
|
@@ -34,6 +34,7 @@ static size_t rb_dm_stmt_memsize(const void * ptr) {
|
|
|
34
34
|
if (w->client_wrapper) {
|
|
35
35
|
memsize += sizeof(*w->client_wrapper);
|
|
36
36
|
}
|
|
37
|
+
return memsize;
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
#ifdef HAVE_RB_GC_MARK_MOVABLE
|
|
@@ -427,6 +428,7 @@ static VALUE rb_dm_stmt_execute(int argc, VALUE *argv, VALUE self) {
|
|
|
427
428
|
rb_encoding *conn_enc;
|
|
428
429
|
DPIRETURN rt;
|
|
429
430
|
rb_encoding *enc;
|
|
431
|
+
slength indicator;
|
|
430
432
|
|
|
431
433
|
GET_STATEMENT(self);
|
|
432
434
|
GET_CLIENT(stmt_wrapper->client);
|
|
@@ -461,10 +463,8 @@ static VALUE rb_dm_stmt_execute(int argc, VALUE *argv, VALUE self) {
|
|
|
461
463
|
|
|
462
464
|
switch (TYPE(argv[i])) {
|
|
463
465
|
case T_NIL:
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
bind_buffers[i].buffer_length = 8192;
|
|
467
|
-
rt = dpi_bind_param(stmt_wrapper->stmt, i + 1, DSQL_PARAM_INPUT, DSQL_C_NCHAR, stmt_wrapper->paramdesc[i].sql_type, stmt_wrapper->paramdesc[i].prec, stmt_wrapper->paramdesc[i].scale, bind_buffers[i].buffer, bind_buffers[i].buffer_length, NULL);
|
|
466
|
+
indicator = DSQL_NULL_DATA;
|
|
467
|
+
rt = dpi_bind_param(stmt_wrapper->stmt, i + 1, DSQL_PARAM_INPUT, DSQL_C_NCHAR, stmt_wrapper->paramdesc[i].sql_type, stmt_wrapper->paramdesc[i].prec, stmt_wrapper->paramdesc[i].scale, NULL, 0, &indicator);
|
|
468
468
|
if(!DSQL_SUCCEEDED(rt))
|
|
469
469
|
rb_raise(cdmError, "failed to bind param %d , code = %d", i, rt, stmt_wrapper, stmt_wrapper->stmt, *(udint8*)stmt_wrapper->stmt);
|
|
470
470
|
break;
|
|
@@ -548,44 +548,13 @@ static VALUE rb_dm_stmt_execute(int argc, VALUE *argv, VALUE self) {
|
|
|
548
548
|
break;
|
|
549
549
|
default:
|
|
550
550
|
// TODO: what Ruby type should support dm_TYPE_TIME
|
|
551
|
-
if (CLASS_OF(argv[i]) == rb_cTime || CLASS_OF(argv[i]) == cDateTime) {
|
|
552
|
-
|
|
553
|
-
VALUE rb_time = argv[i];
|
|
554
|
-
|
|
555
|
-
bind_buffers[i].buffer = xmalloc(sizeof(dpi_timestamp_t));
|
|
556
|
-
|
|
557
|
-
memset(&t, 0, sizeof(dpi_timestamp_t));
|
|
558
|
-
|
|
559
|
-
if (CLASS_OF(argv[i]) == rb_cTime) {
|
|
560
|
-
t.fraction = FIX2INT(rb_funcall(rb_time, intern_usec, 0));
|
|
561
|
-
} else if (CLASS_OF(argv[i]) == cDateTime) {
|
|
562
|
-
t.fraction = NUM2DBL(rb_funcall(rb_time, intern_sec_fraction, 0)) * 1000000;
|
|
563
|
-
}
|
|
551
|
+
if (CLASS_OF(argv[i]) == rb_cTime || CLASS_OF(argv[i]) == cDateTime || CLASS_OF(argv[i]) == cDate) {
|
|
552
|
+
VALUE rb_val_as_string = rb_funcall(argv[i], intern_to_s, 0);
|
|
564
553
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
t.month = FIX2INT(rb_funcall(rb_time, intern_month, 0));
|
|
570
|
-
t.year = FIX2INT(rb_funcall(rb_time, intern_year, 0));
|
|
571
|
-
|
|
572
|
-
*(dpi_timestamp_t*)(bind_buffers[i].buffer) = t;
|
|
573
|
-
bind_buffers[i].buffer_length = sizeof(dpi_timestamp_t);
|
|
574
|
-
rt = dpi_bind_param(stmt_wrapper->stmt, i + 1, DSQL_PARAM_INPUT, DSQL_C_TIMESTAMP, stmt_wrapper->paramdesc[i].sql_type, stmt_wrapper->paramdesc[i].prec, stmt_wrapper->paramdesc[i].scale, bind_buffers[i].buffer, bind_buffers[i].buffer_length, &(bind_buffers[i].buffer_length));
|
|
575
|
-
} else if (CLASS_OF(argv[i]) == cDate) {
|
|
576
|
-
dpi_date_t t;
|
|
577
|
-
VALUE rb_time = argv[i];
|
|
578
|
-
|
|
579
|
-
bind_buffers[i].buffer = xmalloc(sizeof(dpi_date_t));
|
|
580
|
-
|
|
581
|
-
memset(&t, 0, sizeof(dpi_date_t));
|
|
582
|
-
t.day = FIX2INT(rb_funcall(rb_time, intern_day, 0));
|
|
583
|
-
t.month = FIX2INT(rb_funcall(rb_time, intern_month, 0));
|
|
584
|
-
t.year = FIX2INT(rb_funcall(rb_time, intern_year, 0));
|
|
585
|
-
|
|
586
|
-
*(dpi_date_t*)(bind_buffers[i].buffer) = t;
|
|
587
|
-
bind_buffers[i].buffer_length = sizeof(dpi_date_t);
|
|
588
|
-
rt = dpi_bind_param(stmt_wrapper->stmt, i + 1, DSQL_PARAM_INPUT, DSQL_C_DATE, stmt_wrapper->paramdesc[i].sql_type, stmt_wrapper->paramdesc[i].prec, stmt_wrapper->paramdesc[i].scale, bind_buffers[i].buffer, bind_buffers[i].buffer_length, &(bind_buffers[i].buffer_length));
|
|
554
|
+
params_enc[i] = rb_val_as_string;
|
|
555
|
+
params_enc[i] = rb_str_export_to_enc(params_enc[i], conn_enc);
|
|
556
|
+
set_buffer_for_string(&bind_buffers[i], &length_buffers[i], params_enc[i]);
|
|
557
|
+
rt = dpi_bind_param(stmt_wrapper->stmt, i + 1, DSQL_PARAM_INPUT, DSQL_C_NCHAR, stmt_wrapper->paramdesc[i].sql_type, stmt_wrapper->paramdesc[i].prec, stmt_wrapper->paramdesc[i].scale, bind_buffers[i].buffer, bind_buffers[i].buffer_length, &(bind_buffers[i].buffer_length));
|
|
589
558
|
} else if (CLASS_OF(argv[i]) == cBigDecimal) {
|
|
590
559
|
VALUE rb_val_as_string = rb_funcall(argv[i], intern_to_s, 0);
|
|
591
560
|
|
data/lib/dm/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dmRuby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- sunbiao
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-11-
|
|
11
|
+
date: 2025-11-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bigdecimal
|
|
@@ -39,7 +39,7 @@ files:
|
|
|
39
39
|
- "./README.md"
|
|
40
40
|
- "./Rakefile"
|
|
41
41
|
- "./dm.gemspec"
|
|
42
|
-
- "./dmRuby-1.0.
|
|
42
|
+
- "./dmRuby-1.0.6.gem"
|
|
43
43
|
- ext/client.c
|
|
44
44
|
- ext/client.h
|
|
45
45
|
- ext/dm_enc_name_to_ruby.h
|
data/dmRuby-1.0.5.gem
DELETED
|
Binary file
|