summaryrefslogtreecommitdiff
path: root/databases/ruby-postgresql/patches/patch-ab
blob: 8593cf6732010bcb06fb5e21983dd1b7ddd0c591 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
$NetBSD: patch-ab,v 1.1 2010/09/10 04:42:58 taca Exp $

Use modern Ruby's API.

--- ext/postgres.c.orig	2010-08-28 00:00:42.000000000 +0000
+++ ext/postgres.c
@@ -192,7 +192,7 @@ pgconn_connect(argc, argv, self)
     PGconn *conn = NULL;
 
     rb_scan_args(argc, argv, "0*", &args); 
-    if (RARRAY(args)->len == 1) { 
+    if (RARRAY_LEN(args) == 1) { 
         conn = try_connectdb(rb_ary_entry(args, 0));
     }
     if (conn == NULL) {
@@ -720,14 +720,14 @@ pgconn_exec(argc, argv, obj)
 
     Check_Type(command, T_STRING);
 
-    if (RARRAY(params)->len <= 0) {
+    if (RARRAY_LEN(params) <= 0) {
         result = PQexec(conn, StringValuePtr(command));
     }
     else {
-        int len = RARRAY(params)->len;
+        int len = RARRAY_LEN(params);
         int i;
 #ifdef HAVE_PQEXECPARAMS
-        VALUE* ptr = RARRAY(params)->ptr;
+        VALUE* ptr = RARRAY_PTR(params);
         char const** values = ALLOCA_N(char const*, len);
         int* lengths = ALLOCA_N(int, len);
         int* formats = ALLOCA_N(int, len);
@@ -947,9 +947,9 @@ pgconn_insert_table(obj, table, values)
 
     Check_Type(table, T_STRING);
     Check_Type(values, T_ARRAY);
-    i = RARRAY(values)->len;
+    i = RARRAY_LEN(values);
     while (i--) {
-        if (TYPE(RARRAY(RARRAY(values)->ptr[i])) != T_ARRAY) {
+        if (TYPE(RARRAY(RARRAY_PTR(values)[i])) != T_ARRAY) {
             rb_raise(rb_ePGError, "second arg must contain some kind of arrays.");
         }
     }
@@ -964,15 +964,15 @@ pgconn_insert_table(obj, table, values)
     }
     PQclear(result);
 
-    for (i = 0; i < RARRAY(values)->len; i++) {
-        struct RArray *row = RARRAY(RARRAY(values)->ptr[i]);
+    for (i = 0; i < RARRAY_LEN(values); i++) {
+        struct RArray *row = RARRAY(RARRAY_PTR(values)[i]);
         buffer = rb_tainted_str_new(0,0);
-        for (j = 0; j < row->len; j++) {
+        for (j = 0; j < RARRAY_LEN(row); j++) {
             if (j > 0) rb_str_cat(buffer, "\t", 1);
-            if (NIL_P(row->ptr[j])) {
+            if (NIL_P(RARRAY_PTR(row)[j])) {
                 rb_str_cat(buffer, "\\N",2);
             } else {
-                s = rb_obj_as_string(row->ptr[j]);
+		s = rb_obj_as_string(RARRAY_PTR(row)[j]);
                 rb_funcall(s,pg_gsub_bang_id,2,
 					rb_str_new("([\\t\\n\\\\])", 10),pg_escape_str);
                 rb_str_cat(buffer, StringValuePtr(s), RSTRING_LEN(s));
@@ -1482,7 +1482,7 @@ fetch_pgrow(self, fields, row_num)
     PGresult *result = get_pgresult(self);
     VALUE row = rb_funcall(rb_cPGrow, rb_intern("new"), 1, fields);
     int field_num;
-    for (field_num = 0; field_num < RARRAY(fields)->len; field_num++) {
+    for (field_num = 0; field_num < RARRAY_LEN(fields); field_num++) {
         /* don't use push, PGrow is sized with nils in #new */
         rb_ary_store(row, field_num, fetch_pgresult(result, row_num, field_num));
     }
@@ -2417,7 +2417,7 @@ static VALUE
 pgrow_init(self, keys)
     VALUE self, keys;
 {
-    VALUE args[1] = { LONG2NUM(RARRAY(keys)->len) };
+	VALUE args[1] = { LONG2NUM(RARRAY_LEN(keys)) };
     rb_call_super(1, args);
     rb_iv_set(self, "@keys", keys);
     return self;
@@ -2501,7 +2501,7 @@ pgrow_each_pair(self)
 {
     VALUE keys = pgrow_keys(self);
     int i;
-    for (i = 0; i < RARRAY(keys)->len; ++i) {
+    for (i = 0; i < RARRAY_LEN(keys); ++i) {
         rb_yield(rb_assoc_new(rb_ary_entry(keys, i), rb_ary_entry(self, i)));
     }
     return self;
@@ -2556,7 +2556,7 @@ pgrow_to_hash(self)
     VALUE result = rb_hash_new();
     VALUE keys = pgrow_keys(self);
     int i;
-    for (i = 0; i < RARRAY(self)->len; ++i) {
+    for (i = 0; i < RARRAY_LEN(self); ++i) {
         rb_hash_aset(result, rb_ary_entry(keys, i), rb_ary_entry(self, i));
     }
     return result;