annotate main/database/src/converters.cc @ 11474:4fd39d36eff5 octave-forge

Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
author i7tiol
date Fri, 22 Feb 2013 10:16:58 +0000
parents 61ea672a060a
children d14a23884d9c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
1 /*
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
2
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
3 Copyright (C) 2012, 2013 Olaf Till <i7tiol@t-online.de>
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
4
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
5 This program is free software; you can redistribute it and/or modify
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
6 it under the terms of the GNU General Public License as published by
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
7 the Free Software Foundation; either version 3 of the License, or
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
8 (at your option) any later version.
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
9
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
10 This program is distributed in the hope that it will be useful,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
13 GNU General Public License for more details.
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
14
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
15 You should have received a copy of the GNU General Public License
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
16 along with this program; If not, see <http://www.gnu.org/licenses/>.
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
17
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
18 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
19
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
20 #include <octave/oct.h>
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
21 #include <octave/ov-float.h>
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
22 #include <octave/ov-uint8.h>
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
23
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
24 #include <postgresql/libpq-fe.h>
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
25 // FIXME: needed for NAMEDATALEN, but defining a lot of stuff which
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
26 // might conflict with names here
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
27 #include <postgresql/pg_config_manual.h>
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
28
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
29 #include "converters.h"
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
30
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
31 // remember to adjust OCT_PQ_NUM_CONVERTERS in converters.h
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
32
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
33 // helper function for debugging
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
34 void print_conv (oct_pq_conv_t *c)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
35 {
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
36 printf ("oid: %u, aoid: %u, c: %i, e: %i, nc: %i, n: %s, to_s: %i, to_b: %i, fr_s: %i, fr_b: %i,",
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
37 c->oid, c->aoid, c->is_composite, c->is_enum, c->is_not_constant, c->name.c_str (), c->to_octave_str ? 1 : 0, c->to_octave_bin ? 1 : 0, c->from_octave_str ? 1 : 0, c->from_octave_bin ? 1 : 0);
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
38
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
39 printf (", el_oids:");
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
40 for (octave_idx_type i = 0; i < c->el_oids.size (); i++)
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
41 printf (" %u", c->el_oids[i]);
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
42
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
43 printf ("\n");
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
44 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
45
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
46 /* type bool */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
47
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
48 int to_octave_str_bool (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
49 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
50 bool tp = (*c == 't' ? true : false);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
51
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
52 ov = octave_value (tp);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
53
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
54 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
55 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
56
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
57 int to_octave_bin_bool (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
58 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
59 ov = octave_value (bool (*c));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
60
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
61 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
62 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
63
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
64 int from_octave_str_bool (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
65 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
66 bool b = ov.bool_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
67
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
68 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
69 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
70 error ("can not convert octave_value to bool value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
71 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
72 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
73
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
74 val.push_back (b ? '1' : '0');
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
75 val.push_back ('\0');
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
76
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
77 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
78 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
79
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
80 int from_octave_bin_bool (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
81 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
82 bool b = ov.bool_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
83
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
84 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
85 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
86 error ("can not convert octave_value to bool value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
87 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
88 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
89
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
90 val.push_back (char (b));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
91
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
92 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
93 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
94
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
95 oct_pq_conv_t conv_bool = {0, // 16
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
96 0, // 1000
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
97 oct_pq_el_oids_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
98 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
99 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
100 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
101 "bool",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
102 &to_octave_str_bool,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
103 &to_octave_bin_bool,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
104 &from_octave_str_bool,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
105 &from_octave_bin_bool};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
106
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
107 /* end type bool */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
108
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
109 /* type oid */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
110
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
111 int to_octave_str_oid (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
112 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
113 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
114 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
115
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
116 int to_octave_bin_oid (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
117 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
118 ov = octave_value (octave_uint32 (be32toh (*((uint32_t *) c))));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
119
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
120 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
121 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
122
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
123 int from_octave_str_oid (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
124 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
125 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
126 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
127
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
128 int from_octave_bin_oid (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
129 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
130 uint32_t oid = ov.uint_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
131
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
132 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
133 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
134 error ("can not convert octave_value to oid value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
135 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
136 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
137
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
138 OCT_PQ_PUT(val, uint32_t, htobe32 (oid))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
139
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
140 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
141 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
142
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
143 oct_pq_conv_t conv_oid = {0, // 26
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
144 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
145 oct_pq_el_oids_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
146 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
147 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
148 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
149 "oid",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
150 &to_octave_str_oid,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
151 &to_octave_bin_oid,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
152 &from_octave_str_oid,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
153 &from_octave_bin_oid};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
154
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
155 /* end type oid */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
156
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
157 /* type float8 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
158
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
159 int to_octave_str_float8 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
160 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
161 // not implemented
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
162
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
163 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
164 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
165
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
166 int to_octave_bin_float8 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
167 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
168 union
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
169 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
170 double d;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
171 int64_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
172 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
173 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
174
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
175 swap.i = be64toh (*((int64_t *) c));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
176
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
177 ov = octave_value (swap.d);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
178
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
179 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
180 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
181
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
182 int from_octave_str_float8 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
183 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
184 // not implemented
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
185
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
186 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
187 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
188
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
189 int from_octave_bin_float8 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
190 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
191 double d = ov.double_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
192
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
193 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
194 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
195 error ("can not convert octave_value to float8 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
196 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
197 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
198
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
199 union
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
200 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
201 double d;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
202 int64_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
203 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
204 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
205
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
206 swap.d = d;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
207
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
208 OCT_PQ_PUT(val, int64_t, htobe64 (swap.i))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
209
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
210 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
211 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
212
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
213 oct_pq_conv_t conv_float8 = {0, // 701
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
214 0, // 1022
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
215 oct_pq_el_oids_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
216 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
217 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
218 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
219 "float8",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
220 &to_octave_str_float8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
221 &to_octave_bin_float8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
222 &from_octave_str_float8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
223 &from_octave_bin_float8};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
224
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
225 /* end type float8 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
226
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
227 /* type float4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
228
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
229 int to_octave_str_float4 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
230 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
231 // not implemented
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
232
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
233 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
234 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
235
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
236 int to_octave_bin_float4 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
237 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
238 union
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
239 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
240 float f;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
241 int32_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
242 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
243 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
244
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
245 swap.i = be32toh (*((int32_t *) c));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
246
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
247 ov = octave_value (swap.f);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
248
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
249 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
250 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
251
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
252 int from_octave_str_float4 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
253 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
254 // not implemented
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
255
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
256 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
257 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
258
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
259 int from_octave_bin_float4 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
260 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
261 double f = ov.float_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
262
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
263 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
264 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
265 error ("can not convert octave_value to float4 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
266 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
267 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
268
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
269 union
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
270 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
271 float f;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
272 int32_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
273 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
274 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
275
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
276 swap.f = f;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
277
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
278 OCT_PQ_PUT(val, int32_t, htobe32 (swap.i))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
279
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
280 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
281 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
282
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
283 oct_pq_conv_t conv_float4 = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
284 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
285 oct_pq_el_oids_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
286 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
287 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
288 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
289 "float4",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
290 &to_octave_str_float4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
291 &to_octave_bin_float4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
292 &from_octave_str_float4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
293 &from_octave_bin_float4};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
294
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
295 /* end type float4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
296
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
297 /* type bytea */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
298
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
299 int to_octave_str_bytea (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
300 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
301 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
302 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
303
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
304 int to_octave_bin_bytea (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
305 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
306 uint8NDArray m (dim_vector (nb, 1));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
307
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
308 uint8_t *p = (uint8_t *) m.fortran_vec ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
309 for (octave_idx_type i = 0; i < nb; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
310 *(p++) = uint8_t (*(c++));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
311
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
312 ov = octave_value (m);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
313
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
314 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
315 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
316
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
317 int from_octave_str_bytea (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
318 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
319 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
320 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
321
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
322 int from_octave_bin_bytea (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
323 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
324 uint8NDArray b = ov.uint8_array_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
325
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
326 if (! error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
327 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
328 dim_vector dv = b.dims ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
329 if (dv.length () > 2 || (dv(0) > 1 && dv(1) > 1))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
330 error ("bytea representation must be one-dimensional");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
331 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
332
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
333 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
334 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
335 error ("can not convert octave_value to bytea representation");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
336 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
337 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
338
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
339 octave_idx_type nl = b.numel ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
340
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
341 for (int i = 0; i < nl; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
342 val.push_back (b(i).value ());
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
343
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
344 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
345 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
346
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
347 oct_pq_conv_t conv_bytea = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
348 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
349 oct_pq_el_oids_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
350 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
351 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
352 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
353 "bytea",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
354 &to_octave_str_bytea,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
355 &to_octave_bin_bytea,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
356 &from_octave_str_bytea,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
357 &from_octave_bin_bytea};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
358
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
359 /* end type bytea */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
360
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
361 /* type text */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
362
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
363 int to_octave_str_text (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
364 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
365 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
366 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
367
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
368 int to_octave_bin_text (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
369 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
370 std::string s (c, nb);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
371
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
372 ov = octave_value (s);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
373
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
374 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
375 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
376
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
377 int from_octave_str_text (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
378 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
379 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
380 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
381
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
382 int from_octave_bin_text (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
383 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
384 std::string s = ov.string_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
385
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
386 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
387 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
388 error ("can not convert octave_value to string");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
389 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
390 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
391
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
392 octave_idx_type l = s.size ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
393
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
394 for (int i = 0; i < l; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
395 val.push_back (s[i]);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
396
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
397 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
398 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
399
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
400 oct_pq_conv_t conv_text = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
401 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
402 oct_pq_el_oids_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
403 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
404 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
405 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
406 "text",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
407 &to_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
408 &to_octave_bin_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
409 &from_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
410 &from_octave_bin_text};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
411
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
412 /* end type text */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
413
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
414 /* type varchar */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
415
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
416 oct_pq_conv_t conv_varchar = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
417 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
418 oct_pq_el_oids_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
419 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
420 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
421 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
422 "varchar",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
423 &to_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
424 &to_octave_bin_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
425 &from_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
426 &from_octave_bin_text};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
427
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
428 /* end type varchar */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
429
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
430 /* type bpchar */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
431
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
432 oct_pq_conv_t conv_bpchar = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
433 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
434 oct_pq_el_oids_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
435 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
436 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
437 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
438 "bpchar",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
439 &to_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
440 &to_octave_bin_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
441 &from_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
442 &from_octave_bin_text};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
443
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
444 /* end type bpchar */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
445
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
446 /* type name */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
447
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
448 int to_octave_str_name (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
449 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
450 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
451 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
452
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
453 int to_octave_bin_name (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
454 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
455 // FIXME: should we check the string in c?
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
456
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
457 std::string s (c, nb);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
458
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
459 ov = octave_value (s);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
460
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
461 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
462 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
463
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
464 int from_octave_str_name (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
465 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
466 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
467 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
468
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
469 int from_octave_bin_name (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
470 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
471 std::string s = ov.string_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
472
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
473 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
474 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
475 error ("can not convert octave_value to string");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
476 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
477 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
478
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
479 octave_idx_type l = s.size ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
480
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
481 if (l >= NAMEDATALEN)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
482 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
483 error ("identifier too long, must be less than %d characters",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
484 NAMEDATALEN);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
485 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
486 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
487
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
488 for (int i = 0; i < l; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
489 val.push_back (s[i]);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
490
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
491 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
492 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
493
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
494 oct_pq_conv_t conv_name = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
495 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
496 oct_pq_el_oids_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
497 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
498 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
499 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
500 "name",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
501 &to_octave_str_name,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
502 &to_octave_bin_name,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
503 &from_octave_str_name,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
504 &from_octave_bin_name};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
505
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
506 /* end type name */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
507
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
508 /* type int2 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
509
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
510 int to_octave_str_int2 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
511 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
512 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
513 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
514
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
515 int to_octave_bin_int2 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
516 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
517 ov = octave_value (octave_int16 (int16_t (be16toh (*((int16_t *) c)))));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
518
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
519 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
520 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
521
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
522 int from_octave_str_int2 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
523 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
524 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
525 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
526
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
527 int from_octave_bin_int2 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
528 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
529 int16_t i2 = ov.int_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
530
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
531 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
532 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
533 error ("can not convert octave_value to int2 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
534 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
535 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
536
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
537 OCT_PQ_PUT(val, int16_t, htobe16 (i2))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
538
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
539 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
540 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
541
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
542 oct_pq_conv_t conv_int2 = {0, // 26
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
543 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
544 oct_pq_el_oids_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
545 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
546 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
547 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
548 "int2",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
549 &to_octave_str_int2,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
550 &to_octave_bin_int2,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
551 &from_octave_str_int2,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
552 &from_octave_bin_int2};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
553
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
554
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
555 /* end type int2 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
556
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
557 /* type int4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
558
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
559 int to_octave_str_int4 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
560 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
561 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
562 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
563
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
564 int to_octave_bin_int4 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
565 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
566 ov = octave_value (octave_int32 (int32_t (be32toh (*((int32_t *) c)))));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
567
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
568 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
569 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
570
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
571 int from_octave_str_int4 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
572 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
573 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
574 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
575
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
576 int from_octave_bin_int4 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
577 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
578 int32_t i4 = ov.int_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
579
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
580 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
581 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
582 error ("can not convert octave_value to int4 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
583 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
584 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
585
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
586 OCT_PQ_PUT(val, int32_t, htobe32 (i4))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
587
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
588 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
589 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
590
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
591 oct_pq_conv_t conv_int4 = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
592 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
593 oct_pq_el_oids_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
594 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
595 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
596 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
597 "int4",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
598 &to_octave_str_int4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
599 &to_octave_bin_int4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
600 &from_octave_str_int4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
601 &from_octave_bin_int4};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
602
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
603
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
604 /* end type int4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
605
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
606 /* type int8 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
607
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
608 int to_octave_str_int8 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
609 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
610 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
611 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
612
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
613 int to_octave_bin_int8 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
614 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
615 ov = octave_value (octave_int64 (int64_t (be64toh (*((int64_t *) c)))));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
616
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
617 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
618 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
619
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
620 int from_octave_str_int8 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
621 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
622 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
623 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
624
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
625 int from_octave_bin_int8 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
626 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
627 int64_t i8 = ov.int64_scalar_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
628
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
629 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
630 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
631 error ("can not convert octave_value to int8 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
632 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
633 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
634
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
635 OCT_PQ_PUT(val, int64_t, htobe64 (i8))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
636
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
637 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
638 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
639
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
640 oct_pq_conv_t conv_int8 = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
641 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
642 oct_pq_el_oids_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
643 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
644 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
645 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
646 "int8",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
647 &to_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
648 &to_octave_bin_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
649 &from_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
650 &from_octave_bin_int8};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
651
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
652
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
653 /* end type int8 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
654
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
655 /* type money */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
656
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
657 oct_pq_conv_t conv_money = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
658 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
659 oct_pq_el_oids_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
660 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
661 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
662 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
663 "money",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
664 &to_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
665 &to_octave_bin_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
666 &from_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
667 &from_octave_bin_int8};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
668
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
669 /* end type money */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
670
11429
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
671 oct_pq_conv_t *t_conv_ptrs[OCT_PQ_NUM_CONVERTERS] = {&conv_bool,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
672 &conv_oid,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
673 &conv_float8,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
674 &conv_float4,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
675 &conv_text,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
676 &conv_varchar,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
677 &conv_bpchar,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
678 &conv_name,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
679 &conv_bytea,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
680 &conv_int2,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
681 &conv_int4,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
682 &conv_int8,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
683 &conv_money};
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
684
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
685 oct_pq_conv_ptrs_t conv_ptrs (OCT_PQ_NUM_CONVERTERS, t_conv_ptrs);