rubyfb 0.5.4 → 0.5.5
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 +9 -0
- data/Manifest +5 -0
- data/Rakefile +2 -2
- data/ext/AddUser.c +21 -16
- data/ext/Backup.c +12 -10
- data/ext/Common.c +1 -1
- data/ext/Connection.c +7 -3
- data/ext/DataArea.c +1 -9
- data/ext/Database.c +11 -7
- data/ext/FireRuby.c +1 -1
- data/ext/FireRubyException.c +1 -1
- data/ext/Generator.c +6 -12
- data/ext/RemoveUser.c +6 -4
- data/ext/Restore.c +6 -6
- data/ext/ResultSet.c +2 -2
- data/ext/Row.c +7 -7
- data/ext/ServiceManager.c +6 -6
- data/ext/Services.c +2 -1
- data/ext/Statement.c +3 -1
- data/ext/TypeMap.c +37 -40
- data/ext/extconf.rb +5 -0
- data/ext/rfbint.h +14 -0
- data/ext/rfbsleep.h +15 -0
- data/lib/active_record/connection_adapters/rubyfb_adapter.rb +13 -6
- data/lib/arel/visitors/rubyfb.rb +21 -0
- data/lib/rubyfb.rb +5 -5
- data/lib/rubyfb_lib.so +0 -0
- data/mswin32fb/fbclient_mingw.def +86 -0
- data/mswin32fb/fbclient_mingw.lib +0 -0
- data/rubyfb.gemspec +5 -5
- data/test/AddRemoveUserTest.rb +3 -3
- data/test/BackupRestoreTest.rb +3 -3
- data/test/BlobTest.rb +3 -3
- data/test/CharacterSetTest.rb +7 -6
- data/test/ConnectionTest.rb +7 -7
- data/test/DDLTest.rb +3 -3
- data/test/DatabaseTest.rb +3 -3
- data/test/GeneratorTest.rb +3 -3
- data/test/KeyTest.rb +3 -3
- data/test/ResultSetTest.rb +3 -3
- data/test/RoleTest.rb +3 -3
- data/test/RowCountTest.rb +3 -3
- data/test/RowTest.rb +3 -3
- data/test/SQLTest.rb +3 -3
- data/test/SQLTypeTest.rb +3 -3
- data/test/ServiceManagerTest.rb +3 -3
- data/test/StatementTest.rb +3 -3
- data/test/TransactionTest.rb +5 -5
- data/test/TypeTest.rb +3 -3
- metadata +14 -4
data/CHANGELOG
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
v0.5.5 ==
|
2
|
+
Ruby 1.9 compatibility
|
3
|
+
Initial Rails 3 support
|
4
|
+
!!!WARNING!!!
|
5
|
+
Rails 3 support uses derived tables (Firebird server >= 2.0)
|
6
|
+
!!!WARNING!!!
|
7
|
+
DevKit build support (see https://github.com/oneclick/rubyinstaller/wiki/Development-Kit) thanks to Alex Vangelov
|
8
|
+
updated test suite
|
9
|
+
|
1
10
|
v0.5.4 ==
|
2
11
|
add configurable boolen domain and boolean name match patterns
|
3
12
|
fix scale handling for view columns
|
data/Manifest
CHANGED
@@ -43,14 +43,19 @@ ext/Transaction.h
|
|
43
43
|
ext/TypeMap.c
|
44
44
|
ext/TypeMap.h
|
45
45
|
ext/extconf.rb
|
46
|
+
ext/rfbint.h
|
47
|
+
ext/rfbsleep.h
|
46
48
|
lib/Connection.rb
|
47
49
|
lib/ProcedureCall.rb
|
48
50
|
lib/SQLType.rb
|
49
51
|
lib/active_record/connection_adapters/rubyfb_adapter.rb
|
52
|
+
lib/arel/visitors/rubyfb.rb
|
50
53
|
lib/mkdoc
|
51
54
|
lib/rubyfb.rb
|
52
55
|
lib/rubyfb_lib.so
|
53
56
|
lib/src.rb
|
57
|
+
mswin32fb/fbclient_mingw.def
|
58
|
+
mswin32fb/fbclient_mingw.lib
|
54
59
|
mswin32fb/fbclient_ms.lib
|
55
60
|
mswin32fb/ibase.h
|
56
61
|
mswin32fb/iberror.h
|
data/Rakefile
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'echoe'
|
2
|
-
e = Echoe.new('rubyfb', '0.5.
|
2
|
+
e = Echoe.new('rubyfb', '0.5.5') do |p|
|
3
3
|
p.description = "Firebird SQL access library"
|
4
4
|
p.url = "http://rubyforge.org/projects/rubyfb"
|
5
5
|
p.author = "George Georgiev"
|
6
6
|
p.email = "georgiev@heatbs.com"
|
7
7
|
p.rdoc_pattern = ["{examples,ext,lib}/*.rb", "CHANGELOG", "README", "LICENSE"]
|
8
|
-
p.need_tar_gz = !
|
8
|
+
p.need_tar_gz = !(RUBY_PLATFORM.include?("win32") || RUBY_PLATFORM.include?("mingw32"))
|
9
9
|
|
10
10
|
if ARGV.include? "binpkg"
|
11
11
|
p.platform=Gem::Platform::CURRENT
|
data/ext/AddUser.c
CHANGED
@@ -356,34 +356,39 @@ void createAddUserBuffer(VALUE self, char **buffer, short *length)
|
|
356
356
|
VALUE value = Qnil,
|
357
357
|
first = Qnil,
|
358
358
|
middle = Qnil,
|
359
|
-
last = Qnil
|
359
|
+
last = Qnil,
|
360
|
+
tmp_str = Qnil;
|
360
361
|
char *offset = NULL;
|
361
362
|
int number = 0;
|
362
363
|
|
363
364
|
/* Calculate the required buffer length. */
|
364
365
|
*length = 1;
|
365
|
-
|
366
|
-
|
366
|
+
|
367
|
+
tmp_str = rb_iv_get(self, "@user_name");
|
368
|
+
*length += strlen(StringValuePtr(tmp_str)) + 3;
|
369
|
+
|
370
|
+
tmp_str = rb_iv_get(self, "@password");
|
371
|
+
*length += strlen(StringValuePtr(tmp_str)) + 3;
|
367
372
|
|
368
373
|
value = rb_iv_get(self, "@first_name");
|
369
374
|
if(value != Qnil)
|
370
375
|
{
|
371
376
|
first = rb_funcall(value, rb_intern("to_s"), 0);
|
372
|
-
*length += strlen(
|
377
|
+
*length += strlen(StringValuePtr(first)) + 3;
|
373
378
|
}
|
374
379
|
|
375
380
|
value = rb_iv_get(self, "@middle_name");
|
376
381
|
if(value != Qnil)
|
377
382
|
{
|
378
383
|
middle = rb_funcall(value, rb_intern("to_s"), 0);
|
379
|
-
*length += strlen(
|
384
|
+
*length += strlen(StringValuePtr(middle)) + 3;
|
380
385
|
}
|
381
386
|
|
382
387
|
value = rb_iv_get(self, "@last_name");
|
383
388
|
if(value != Qnil)
|
384
389
|
{
|
385
390
|
last = rb_funcall(value, rb_intern("to_s"), 0);
|
386
|
-
*length += strlen(
|
391
|
+
*length += strlen(StringValuePtr(last)) + 3;
|
387
392
|
}
|
388
393
|
|
389
394
|
/* Create and populate the buffer. */
|
@@ -399,42 +404,42 @@ void createAddUserBuffer(VALUE self, char **buffer, short *length)
|
|
399
404
|
|
400
405
|
*offset++ = isc_spb_sec_username;
|
401
406
|
value = rb_iv_get(self, "@user_name");
|
402
|
-
number = strlen(
|
407
|
+
number = strlen(StringValuePtr(value));
|
403
408
|
ADD_SPB_LENGTH(offset, number);
|
404
|
-
memcpy(offset,
|
409
|
+
memcpy(offset, StringValuePtr(value), number);
|
405
410
|
offset += number;
|
406
411
|
|
407
412
|
*offset++ = isc_spb_sec_password;
|
408
413
|
value = rb_iv_get(self, "@password");
|
409
|
-
number = strlen(
|
414
|
+
number = strlen(StringValuePtr(value));
|
410
415
|
ADD_SPB_LENGTH(offset, number);
|
411
|
-
memcpy(offset,
|
416
|
+
memcpy(offset, StringValuePtr(value), number);
|
412
417
|
offset += number;
|
413
418
|
|
414
419
|
if(first != Qnil)
|
415
420
|
{
|
416
421
|
*offset++ = isc_spb_sec_firstname;
|
417
|
-
number = strlen(
|
422
|
+
number = strlen(StringValuePtr(first));
|
418
423
|
ADD_SPB_LENGTH(offset, number);
|
419
|
-
memcpy(offset,
|
424
|
+
memcpy(offset, StringValuePtr(first), number);
|
420
425
|
offset += number;
|
421
426
|
}
|
422
427
|
|
423
428
|
if(middle != Qnil)
|
424
429
|
{
|
425
430
|
*offset++ = isc_spb_sec_middlename;
|
426
|
-
number = strlen(
|
431
|
+
number = strlen(StringValuePtr(middle));
|
427
432
|
ADD_SPB_LENGTH(offset, number);
|
428
|
-
memcpy(offset,
|
433
|
+
memcpy(offset, StringValuePtr(middle), number);
|
429
434
|
offset += number;
|
430
435
|
}
|
431
436
|
|
432
437
|
if(last != Qnil)
|
433
438
|
{
|
434
439
|
*offset++ = isc_spb_sec_lastname;
|
435
|
-
number = strlen(
|
440
|
+
number = strlen(StringValuePtr(last));
|
436
441
|
ADD_SPB_LENGTH(offset, number);
|
437
|
-
memcpy(offset,
|
442
|
+
memcpy(offset, StringValuePtr(last), number);
|
438
443
|
offset += number;
|
439
444
|
}
|
440
445
|
}
|
data/ext/Backup.c
CHANGED
@@ -602,7 +602,8 @@ void createBackupBuffer(VALUE from, VALUE to, VALUE options, char **buffer,
|
|
602
602
|
ID id = rb_intern("key?");
|
603
603
|
VALUE names = rb_funcall(to, rb_intern("keys"), 0),
|
604
604
|
sizes = rb_funcall(to, rb_intern("values"), 0),
|
605
|
-
count = rb_funcall(names, rb_intern("size"), 0)
|
605
|
+
count = rb_funcall(names, rb_intern("size"), 0),
|
606
|
+
tmp_str = Qnil;
|
606
607
|
char *position = NULL;
|
607
608
|
short number,
|
608
609
|
flags = 0,
|
@@ -621,17 +622,18 @@ void createBackupBuffer(VALUE from, VALUE to, VALUE options, char **buffer,
|
|
621
622
|
|
622
623
|
/* Calculate the length needed for the buffer. */
|
623
624
|
*length = 2;
|
624
|
-
*length += strlen(
|
625
|
+
*length += strlen(StringValuePtr(from)) + 3;
|
625
626
|
|
626
627
|
/* Count file name and length sizes. */
|
627
628
|
for(i = 0; i < size; i++)
|
628
629
|
{
|
629
|
-
|
630
|
+
tmp_str = rb_ary_entry(names, i);
|
631
|
+
*length += strlen(StringValuePtr(tmp_str)) + 3;
|
630
632
|
if(i != size - 1)
|
631
633
|
{
|
632
634
|
VALUE num = rb_funcall(rb_ary_entry(sizes, i), rb_intern("to_s"), 0);
|
633
635
|
|
634
|
-
*length += strlen(
|
636
|
+
*length += strlen(StringValuePtr(num)) + 3;
|
635
637
|
}
|
636
638
|
}
|
637
639
|
|
@@ -668,9 +670,9 @@ void createBackupBuffer(VALUE from, VALUE to, VALUE options, char **buffer,
|
|
668
670
|
*position++ = isc_action_svc_backup;
|
669
671
|
|
670
672
|
*position++ = isc_spb_dbname;
|
671
|
-
number = strlen(
|
673
|
+
number = strlen(StringValuePtr(from));
|
672
674
|
ADD_SPB_LENGTH(position, number);
|
673
|
-
memcpy(position,
|
675
|
+
memcpy(position, StringValuePtr(from), number);
|
674
676
|
position += number;
|
675
677
|
|
676
678
|
for(i = 0; i < size; i++)
|
@@ -678,9 +680,9 @@ void createBackupBuffer(VALUE from, VALUE to, VALUE options, char **buffer,
|
|
678
680
|
VALUE name = rb_ary_entry(names, i);
|
679
681
|
|
680
682
|
*position++ = isc_spb_bkp_file;
|
681
|
-
number = strlen(
|
683
|
+
number = strlen(StringValuePtr(name));
|
682
684
|
ADD_SPB_LENGTH(position, number);
|
683
|
-
memcpy(position,
|
685
|
+
memcpy(position, StringValuePtr(name), number);
|
684
686
|
position += number;
|
685
687
|
|
686
688
|
if(i != size - 1)
|
@@ -689,9 +691,9 @@ void createBackupBuffer(VALUE from, VALUE to, VALUE options, char **buffer,
|
|
689
691
|
|
690
692
|
max = rb_funcall(max, rb_intern("to_s"), 0);
|
691
693
|
*position++ = isc_spb_bkp_length;
|
692
|
-
number = strlen(
|
694
|
+
number = strlen(StringValuePtr(max));
|
693
695
|
ADD_SPB_LENGTH(position, number);
|
694
|
-
memcpy(position,
|
696
|
+
memcpy(position, StringValuePtr(max), number);
|
695
697
|
position += number;
|
696
698
|
}
|
697
699
|
}
|
data/ext/Common.c
CHANGED
@@ -48,7 +48,7 @@ VALUE forbidObjectCopy(VALUE copy, VALUE original)
|
|
48
48
|
array[1] = rb_funcall(value, rb_intern("name"), 0);
|
49
49
|
message = rb_funcall(message, rb_intern("gsub"), 2, array);
|
50
50
|
|
51
|
-
rb_fireruby_raise(NULL,
|
51
|
+
rb_fireruby_raise(NULL, StringValuePtr(message));
|
52
52
|
|
53
53
|
return(Qnil);
|
54
54
|
}
|
data/ext/Connection.c
CHANGED
@@ -106,7 +106,8 @@ static VALUE initializeConnection(int argc, VALUE *argv, VALUE self)
|
|
106
106
|
*dpb = NULL;
|
107
107
|
VALUE user = Qnil,
|
108
108
|
password = Qnil,
|
109
|
-
options = Qnil
|
109
|
+
options = Qnil,
|
110
|
+
tmp_str = Qnil;
|
110
111
|
|
111
112
|
if(argc < 1)
|
112
113
|
{
|
@@ -118,7 +119,10 @@ static VALUE initializeConnection(int argc, VALUE *argv, VALUE self)
|
|
118
119
|
{
|
119
120
|
rb_fireruby_raise(NULL, "Invalid database specified for connection.");
|
120
121
|
}
|
121
|
-
|
122
|
+
|
123
|
+
tmp_str = rb_iv_get(argv[0], "@file");
|
124
|
+
file = StringValuePtr(tmp_str);
|
125
|
+
|
122
126
|
Data_Get_Struct(self, ConnectionHandle, connection);
|
123
127
|
|
124
128
|
/* Extract parameters. */
|
@@ -300,7 +304,7 @@ static VALUE connectionToString(VALUE self)
|
|
300
304
|
file = rb_iv_get(database, "@file");
|
301
305
|
char text[256];
|
302
306
|
|
303
|
-
sprintf(text, "%s@%s (OPEN)",
|
307
|
+
sprintf(text, "%s@%s (OPEN)", StringValuePtr(user), StringValuePtr(file));
|
304
308
|
result = rb_str_new2(text);
|
305
309
|
}
|
306
310
|
|
data/ext/DataArea.c
CHANGED
@@ -26,15 +26,7 @@
|
|
26
26
|
/* Includes. */
|
27
27
|
#include "DataArea.h"
|
28
28
|
#include "FireRubyException.h"
|
29
|
-
|
30
|
-
#ifdef OS_UNIX
|
31
|
-
#include <inttypes.h>
|
32
|
-
#else
|
33
|
-
typedef short int16_t;
|
34
|
-
typedef long int32_t;
|
35
|
-
typedef long long int64_t;
|
36
|
-
#endif
|
37
|
-
|
29
|
+
#include "rfbint.h"
|
38
30
|
|
39
31
|
/**
|
40
32
|
* This function allocates the memory for a output XSQLDA based on a specified
|
data/ext/Database.c
CHANGED
@@ -195,7 +195,8 @@ static VALUE connectToDatabase(int argc, VALUE *argv, VALUE self)
|
|
195
195
|
static VALUE createDatabase(int argc, VALUE *argv, VALUE unused)
|
196
196
|
{
|
197
197
|
VALUE database = Qnil,
|
198
|
-
set = Qnil
|
198
|
+
set = Qnil,
|
199
|
+
tmp_str = Qnil;
|
199
200
|
char sql[512] = "",
|
200
201
|
*text = NULL;
|
201
202
|
int value = 1024;
|
@@ -223,17 +224,20 @@ static VALUE createDatabase(int argc, VALUE *argv, VALUE unused)
|
|
223
224
|
}
|
224
225
|
|
225
226
|
/* Prepare the SQL statement. */
|
226
|
-
|
227
|
-
|
228
|
-
|
227
|
+
tmp_str = rb_funcall(argv[0], rb_intern("to_s"), 0);
|
228
|
+
sprintf(sql, "CREATE DATABASE '%s'", StringValuePtr(tmp_str));
|
229
|
+
|
230
|
+
tmp_str = rb_funcall(argv[1], rb_intern("to_s"), 0);
|
231
|
+
text = StringValuePtr(tmp_str);
|
229
232
|
if(strlen(text) > 0)
|
230
233
|
{
|
231
234
|
strcat(sql, " USER '");
|
232
235
|
strcat(sql, text);
|
233
236
|
strcat(sql, "'");
|
234
237
|
}
|
235
|
-
|
236
|
-
|
238
|
+
|
239
|
+
tmp_str = rb_funcall(argv[2], rb_intern("to_s"), 0);
|
240
|
+
text = StringValuePtr(tmp_str);
|
237
241
|
if(strlen(text) > 0)
|
238
242
|
{
|
239
243
|
strcat(sql, " PASSWORD '");
|
@@ -254,7 +258,7 @@ static VALUE createDatabase(int argc, VALUE *argv, VALUE unused)
|
|
254
258
|
char *text = NULL;
|
255
259
|
|
256
260
|
set = rb_funcall(argv[4], rb_intern("to_s"), 0);
|
257
|
-
text =
|
261
|
+
text = StringValuePtr(set);
|
258
262
|
if(strlen(text) > 0)
|
259
263
|
{
|
260
264
|
strcat(sql, " DEFAULT CHARACTER SET ");
|
data/ext/FireRuby.c
CHANGED
data/ext/FireRubyException.c
CHANGED
data/ext/Generator.c
CHANGED
@@ -30,13 +30,7 @@
|
|
30
30
|
#include "Statement.h"
|
31
31
|
#include "Transaction.h"
|
32
32
|
#include "DataArea.h"
|
33
|
-
#
|
34
|
-
#include <inttypes.h>
|
35
|
-
#else
|
36
|
-
typedef short int16_t;
|
37
|
-
typedef long int32_t;
|
38
|
-
typedef long long int64_t;
|
39
|
-
#endif
|
33
|
+
#include "rfbint.h"
|
40
34
|
|
41
35
|
/* Function prototypes. */
|
42
36
|
static VALUE allocateGenerator(VALUE);
|
@@ -176,7 +170,7 @@ static VALUE getLastGeneratorValue(VALUE self)
|
|
176
170
|
|
177
171
|
Data_Get_Struct(self, GeneratorHandle, generator);
|
178
172
|
|
179
|
-
number = getGeneratorValue(
|
173
|
+
number = getGeneratorValue(StringValuePtr(name), 0, generator->connection);
|
180
174
|
|
181
175
|
return(INT2NUM(number));
|
182
176
|
}
|
@@ -206,7 +200,7 @@ static VALUE getNextGeneratorValue(VALUE self, VALUE step)
|
|
206
200
|
rb_fireruby_raise(NULL, "Invalid generator step value.");
|
207
201
|
}
|
208
202
|
|
209
|
-
number = getGeneratorValue(
|
203
|
+
number = getGeneratorValue(StringValuePtr(name), FIX2INT(step),
|
210
204
|
generator->connection);
|
211
205
|
|
212
206
|
return(INT2NUM(number));
|
@@ -230,7 +224,7 @@ static VALUE dropGenerator(VALUE self)
|
|
230
224
|
name = rb_iv_get(self, "@name");
|
231
225
|
|
232
226
|
/* Drop the generator. */
|
233
|
-
deleteGenerator(
|
227
|
+
deleteGenerator(StringValuePtr(name), generator->connection);
|
234
228
|
|
235
229
|
return(self);
|
236
230
|
}
|
@@ -267,7 +261,7 @@ static VALUE doesGeneratorExist(VALUE klass, VALUE name, VALUE connection)
|
|
267
261
|
rb_fireruby_raise(NULL, "Connection is closed.");
|
268
262
|
}
|
269
263
|
|
270
|
-
if(checkForGenerator(
|
264
|
+
if(checkForGenerator(StringValuePtr(name), &handle->handle))
|
271
265
|
{
|
272
266
|
exists = Qtrue;
|
273
267
|
}
|
@@ -310,7 +304,7 @@ static VALUE createGenerator(VALUE klass, VALUE name, VALUE connection)
|
|
310
304
|
Data_Get_Struct(connection, ConnectionHandle, handle);
|
311
305
|
if(handle->handle != 0)
|
312
306
|
{
|
313
|
-
installGenerator(
|
307
|
+
installGenerator(StringValuePtr(name), &handle->handle);
|
314
308
|
result = rb_generator_new(name, connection);
|
315
309
|
}
|
316
310
|
else
|
data/ext/RemoveUser.c
CHANGED
@@ -168,13 +168,15 @@ VALUE executeRemoveUser(VALUE self, VALUE manager)
|
|
168
168
|
*/
|
169
169
|
void createRemoveUserBuffer(VALUE self, char **buffer, short *length)
|
170
170
|
{
|
171
|
-
VALUE value = Qnil
|
171
|
+
VALUE value = Qnil,
|
172
|
+
tmp_str = Qnil;
|
172
173
|
char *offset = NULL;
|
173
174
|
int number = 0;
|
174
175
|
|
175
176
|
/* Calculate the required buffer length. */
|
176
177
|
*length = 1;
|
177
|
-
|
178
|
+
tmp_str = rb_iv_get(self, "@user_name");
|
179
|
+
*length += strlen(StringValuePtr(tmp_str)) + 3;
|
178
180
|
|
179
181
|
/* Create and populate the buffer. */
|
180
182
|
offset = *buffer = ALLOC_N(char, *length);
|
@@ -189,9 +191,9 @@ void createRemoveUserBuffer(VALUE self, char **buffer, short *length)
|
|
189
191
|
|
190
192
|
*offset++ = isc_spb_sec_username;
|
191
193
|
value = rb_iv_get(self, "@user_name");
|
192
|
-
number = strlen(
|
194
|
+
number = strlen(StringValuePtr(value));
|
193
195
|
ADD_SPB_LENGTH(offset, number);
|
194
|
-
memcpy(offset,
|
196
|
+
memcpy(offset, StringValuePtr(value), number);
|
195
197
|
offset += number;
|
196
198
|
}
|
197
199
|
|
data/ext/Restore.c
CHANGED
@@ -717,8 +717,8 @@ void createRestoreBuffer(VALUE file, VALUE database, VALUE options,
|
|
717
717
|
|
718
718
|
/* Determine the length of the buffer. */
|
719
719
|
*length = 7;
|
720
|
-
*length += strlen(
|
721
|
-
*length += strlen(
|
720
|
+
*length += strlen(StringValuePtr(file)) + 3;
|
721
|
+
*length += strlen(StringValuePtr(database)) + 3;
|
722
722
|
if(cache != Qnil)
|
723
723
|
{
|
724
724
|
*length += 5;
|
@@ -743,16 +743,16 @@ void createRestoreBuffer(VALUE file, VALUE database, VALUE options,
|
|
743
743
|
|
744
744
|
*offset++ = isc_action_svc_restore;
|
745
745
|
|
746
|
-
number = strlen(
|
746
|
+
number = strlen(StringValuePtr(file));
|
747
747
|
*offset++ = isc_spb_bkp_file;
|
748
748
|
ADD_SPB_LENGTH(offset, number);
|
749
|
-
memcpy(offset,
|
749
|
+
memcpy(offset, StringValuePtr(file), number);
|
750
750
|
offset += number;
|
751
751
|
|
752
|
-
number = strlen(
|
752
|
+
number = strlen(StringValuePtr(database));
|
753
753
|
*offset++ = isc_spb_dbname;
|
754
754
|
ADD_SPB_LENGTH(offset, number);
|
755
|
-
memcpy(offset,
|
755
|
+
memcpy(offset, StringValuePtr(database), number);
|
756
756
|
offset += number;
|
757
757
|
|
758
758
|
if(cache != Qnil)
|
data/ext/ResultSet.c
CHANGED
@@ -169,7 +169,7 @@ VALUE initializeResultSet(VALUE self, VALUE connection, VALUE transaction,
|
|
169
169
|
Data_Get_Struct(connection, ConnectionHandle, cHandle);
|
170
170
|
Data_Get_Struct(transaction, TransactionHandle, tHandle);
|
171
171
|
Data_Get_Struct(self, ResultsHandle, results);
|
172
|
-
prepare(&cHandle->handle, &tHandle->handle,
|
172
|
+
prepare(&cHandle->handle, &tHandle->handle, StringValuePtr(sql), &results->handle,
|
173
173
|
setting, &type, &inputs, &outputs);
|
174
174
|
|
175
175
|
if(type != isc_info_sql_stmt_select &&
|
@@ -188,7 +188,7 @@ VALUE initializeResultSet(VALUE self, VALUE connection, VALUE transaction,
|
|
188
188
|
results->dialect = setting;
|
189
189
|
|
190
190
|
/* UNCOMMENT FOR DEBUGGING PURPOSES! */
|
191
|
-
/*strcpy(results->sql,
|
191
|
+
/*strcpy(results->sql, StringValuePtr(sql));*/
|
192
192
|
|
193
193
|
/* Check if input parameters are needed. */
|
194
194
|
if(inputs > 0)
|
data/ext/Row.c
CHANGED
@@ -133,8 +133,8 @@ static VALUE initializeRow(VALUE self, VALUE results, VALUE data, VALUE number)
|
|
133
133
|
index = INT2NUM(i);
|
134
134
|
name = rb_funcall(results, rb_intern("column_name"), 1, index);
|
135
135
|
alias = rb_funcall(results, rb_intern("column_alias"), 1, index);
|
136
|
-
strcpy(row->columns[i].name,
|
137
|
-
strcpy(row->columns[i].alias,
|
136
|
+
strcpy(row->columns[i].name, StringValuePtr(name));
|
137
|
+
strcpy(row->columns[i].alias, StringValuePtr(alias));
|
138
138
|
items = rb_ary_entry(data, i);
|
139
139
|
row->columns[i].value = rb_ary_entry(items, 0);
|
140
140
|
row->columns[i].type = rb_ary_entry(items, 1);
|
@@ -265,7 +265,7 @@ static VALUE getColumnValue(VALUE self, VALUE index)
|
|
265
265
|
done = 0;
|
266
266
|
VALUE flag = getFireRubySetting("ALIAS_KEYS");
|
267
267
|
|
268
|
-
strcpy(name,
|
268
|
+
strcpy(name, StringValuePtr(index));
|
269
269
|
for(i = 0; i < row->size && done == 0; i++)
|
270
270
|
{
|
271
271
|
int match;
|
@@ -447,7 +447,7 @@ VALUE fetchRowValue(int size, VALUE *parameters, VALUE self)
|
|
447
447
|
if(size == 1)
|
448
448
|
{
|
449
449
|
rb_raise(rb_eIndexError, "Column identifier '%s' not found in row.",
|
450
|
-
|
450
|
+
StringValuePtr(parameters[0]));
|
451
451
|
}
|
452
452
|
value = parameters[1];
|
453
453
|
}
|
@@ -477,7 +477,7 @@ VALUE hasColumnKey(VALUE self, VALUE name)
|
|
477
477
|
VALUE flag = getFireRubySetting("ALIAS_KEYS");
|
478
478
|
|
479
479
|
Data_Get_Struct(self, RowHandle, row);
|
480
|
-
strcpy(text,
|
480
|
+
strcpy(text, StringValuePtr(name));
|
481
481
|
for(i = 0; i < row->size && result == Qfalse; i++)
|
482
482
|
{
|
483
483
|
int match;
|
@@ -521,7 +521,7 @@ VALUE hasColumnName(VALUE self, VALUE name)
|
|
521
521
|
int i;
|
522
522
|
|
523
523
|
Data_Get_Struct(self, RowHandle, row);
|
524
|
-
strcpy(text,
|
524
|
+
strcpy(text, StringValuePtr(name));
|
525
525
|
for(i = 0; i < row->size && result == Qfalse; i++)
|
526
526
|
{
|
527
527
|
if(strcmp(text, row->columns[i].name) == 0)
|
@@ -553,7 +553,7 @@ VALUE hasColumnAlias(VALUE self, VALUE name)
|
|
553
553
|
int i;
|
554
554
|
|
555
555
|
Data_Get_Struct(self, RowHandle, row);
|
556
|
-
strcpy(text,
|
556
|
+
strcpy(text, StringValuePtr(name));
|
557
557
|
for(i = 0; i < row->size && result == Qfalse; i++)
|
558
558
|
{
|
559
559
|
if(strcmp(text, row->columns[i].alias) == 0)
|
data/ext/ServiceManager.c
CHANGED
@@ -113,8 +113,8 @@ VALUE connectServiceManager(VALUE self, VALUE user, VALUE password)
|
|
113
113
|
}
|
114
114
|
|
115
115
|
/* Calculate the size of the service parameter buffer. */
|
116
|
-
length += strlen(
|
117
|
-
length += strlen(
|
116
|
+
length += strlen(StringValuePtr(user)) + 2;
|
117
|
+
length += strlen(StringValuePtr(password)) + 2;
|
118
118
|
|
119
119
|
/* Create the service parameter buffer. */
|
120
120
|
position = buffer = ALLOC_N(char, length);
|
@@ -129,21 +129,21 @@ VALUE connectServiceManager(VALUE self, VALUE user, VALUE password)
|
|
129
129
|
*position++ = isc_spb_version;
|
130
130
|
*position++ = isc_spb_current_version;
|
131
131
|
|
132
|
-
text =
|
132
|
+
text = StringValuePtr(user);
|
133
133
|
size = strlen(text);
|
134
134
|
*position++ = isc_spb_user_name;
|
135
135
|
*position++ = size;
|
136
136
|
strncpy(position, text, size);
|
137
137
|
position += size;
|
138
138
|
|
139
|
-
text =
|
139
|
+
text = StringValuePtr(password);
|
140
140
|
size = strlen(text);
|
141
141
|
*position++ = isc_spb_password;
|
142
142
|
*position++ = size;
|
143
143
|
strncpy(position, text, size);
|
144
144
|
|
145
145
|
/* Create the service name. */
|
146
|
-
size = strlen(
|
146
|
+
size = strlen(StringValuePtr(host)) + 13;
|
147
147
|
service = ALLOC_N(char, size);
|
148
148
|
if(service == NULL)
|
149
149
|
{
|
@@ -152,7 +152,7 @@ VALUE connectServiceManager(VALUE self, VALUE user, VALUE password)
|
|
152
152
|
"Memory allocation failure service manager service name.");
|
153
153
|
}
|
154
154
|
memset(service, 0, size);
|
155
|
-
sprintf(service, "%s:service_mgr",
|
155
|
+
sprintf(service, "%s:service_mgr", StringValuePtr(host));
|
156
156
|
|
157
157
|
/* Make the attachment call. */
|
158
158
|
if(isc_service_attach(status, 0, service, &manager->handle, length,
|
data/ext/Services.c
CHANGED
@@ -25,6 +25,7 @@
|
|
25
25
|
|
26
26
|
#include "Services.h"
|
27
27
|
#include "FireRubyException.h"
|
28
|
+
#include "rfbsleep.h"
|
28
29
|
#ifdef OS_UNIX
|
29
30
|
#include <unistd.h>
|
30
31
|
#endif
|
@@ -116,7 +117,7 @@ VALUE queryService(isc_svc_handle *handle)
|
|
116
117
|
/* Snooze if we're not done. */
|
117
118
|
if(!done)
|
118
119
|
{
|
119
|
-
|
120
|
+
rfb_sleep(1);
|
120
121
|
}
|
121
122
|
}
|
122
123
|
|
data/ext/Statement.c
CHANGED
@@ -234,14 +234,16 @@ VALUE getStatementType(VALUE self)
|
|
234
234
|
ConnectionHandle *connection = NULL;
|
235
235
|
TransactionHandle *transaction = NULL;
|
236
236
|
int outputs = 0;
|
237
|
+
VALUE tmp_str = Qnil;
|
237
238
|
|
238
239
|
Data_Get_Struct(self, StatementHandle, statement);
|
239
240
|
Data_Get_Struct(rb_iv_get(self, "@connection"), ConnectionHandle, connection);
|
240
241
|
Data_Get_Struct(rb_iv_get(self, "@transaction"), TransactionHandle, transaction);
|
241
242
|
if(statement->handle == 0)
|
242
243
|
{
|
244
|
+
tmp_str = rb_iv_get(self, "@sql");
|
243
245
|
prepare(&connection->handle, &transaction->handle,
|
244
|
-
|
246
|
+
StringValuePtr(tmp_str), &statement->handle,
|
245
247
|
statement->dialect, &statement->type, &statement->inputs,
|
246
248
|
&outputs);
|
247
249
|
}
|