annotate main/database/src/converters.cc @ 11656:d38859613a53 octave-forge

Leave checking of 'name' length against NAMEDATALEN to server. Note to previous commit: -O2 was meant, not -O0.
author i7tiol
date Sat, 27 Apr 2013 08:33:57 +0000
parents 6bbb1584d933
children 465192f682f0
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
11553
35e9e4b6ab34 Fix configuration of postgresql include directories.
i7tiol
parents: 11480
diff changeset
24 #include <libpq-fe.h>
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
25
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
26 #include "converters.h"
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
27
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
28 // remember to adjust OCT_PQ_NUM_CONVERTERS in converters.h
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
29
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
30 // helper function for debugging
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
31 void print_conv (oct_pq_conv_t *c)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
32 {
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
33 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
34 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
35
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 (", el_oids:");
11645
bd5a8f1bdfb8 Clean out harmless warnings and one unnecessarily returned column.
i7tiol
parents: 11553
diff changeset
37 for (size_t i = 0; i < c->el_oids.size (); i++)
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
38 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
39
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 printf ("\n");
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
41 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
42
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
43 /* type bool */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
44
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
45 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
46 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
47 bool tp = (*c == 't' ? true : false);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
48
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
49 ov = octave_value (tp);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
50
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
51 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
52 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
53
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
54 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
55 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
56 ov = octave_value (bool (*c));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
57
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
58 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
59 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
60
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
61 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
62 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
63 bool b = ov.bool_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
64
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
65 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
66 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
67 error ("can not convert octave_value to bool value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
68 return 1;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
71 val.push_back (b ? '1' : '0');
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
72 val.push_back ('\0');
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 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
75 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
76
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
77 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
78 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
79 bool b = ov.bool_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
80
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
81 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
82 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
83 error ("can not convert octave_value to bool value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
84 return 1;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
87 val.push_back (char (b));
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 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
90 }
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 oct_pq_conv_t conv_bool = {0, // 16
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
93 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
94 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
95 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
96 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
97 false,
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 "bool",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
100 &to_octave_str_bool,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
101 &to_octave_bin_bool,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
102 &from_octave_str_bool,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
103 &from_octave_bin_bool};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
104
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
105 /* end type 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 /* type oid */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
108
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
109 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
110 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
111 return 1;
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
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
114 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
115 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
116 ov = octave_value (octave_uint32 (be32toh (*((uint32_t *) c))));
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 return 0;
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
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
121 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
122 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
123 return 1;
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
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
126 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
127 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
128 uint32_t oid = ov.uint_value ();
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 if (error_state)
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 error ("can not convert octave_value to oid value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
133 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
134 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
135
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
136 OCT_PQ_PUT(val, uint32_t, htobe32 (oid))
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 return 0;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
141 oct_pq_conv_t conv_oid = {0, // 26
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
142 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
143 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
144 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
145 false,
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 "oid",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
149 &to_octave_str_oid,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
150 &to_octave_bin_oid,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
151 &from_octave_str_oid,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
152 &from_octave_bin_oid};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
153
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
154 /* end type oid */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
155
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
156 /* type float8 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
157
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
158 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
159 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
160 // not implemented
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
161
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
162 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
163 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
164
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
165 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
166 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
167 union
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
168 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
169 double d;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
170 int64_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
171 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
172 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
173
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
174 swap.i = be64toh (*((int64_t *) c));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
175
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
176 ov = octave_value (swap.d);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
177
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
178 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
179 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
180
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
181 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
182 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
183 // not implemented
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
184
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
185 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
186 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
187
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
188 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
189 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
190 union
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
191 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
192 double d;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
193 int64_t i;
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 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
196
11655
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
197 swap.d = ov.double_value ();
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
198
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
199 if (error_state)
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
200 {
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
201 error ("can not convert octave_value to float8 value");
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
202 return 1;
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
203 }
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
204
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
205 OCT_PQ_PUT(val, int64_t, htobe64 (swap.i))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
206
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
207 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
208 }
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 oct_pq_conv_t conv_float8 = {0, // 701
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
211 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
212 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
213 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
214 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
215 false,
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 "float8",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
218 &to_octave_str_float8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
219 &to_octave_bin_float8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
220 &from_octave_str_float8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
221 &from_octave_bin_float8};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
222
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
223 /* end type 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 /* type float4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
226
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
227 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
228 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
229 // not implemented
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 return 1;
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
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
234 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
235 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
236 union
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 float f;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
239 int32_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
240 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
241 swap;
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.i = be32toh (*((int32_t *) c));
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 ov = octave_value (swap.f);
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 return 0;
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
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
250 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
251 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
252 // not implemented
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 return 1;
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
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
257 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
258 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
259 union
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 float f;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
262 int32_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
263 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
264 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
265
11655
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
266 swap.f = ov.float_value ();
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
267
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
268 if (error_state)
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
269 {
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
270 error ("can not convert octave_value to float4 value");
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
271 return 1;
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
272 }
11394
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 OCT_PQ_PUT(val, int32_t, htobe32 (swap.i))
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 return 0;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
279 oct_pq_conv_t conv_float4 = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
280 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
281 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
282 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
283 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
284 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
285 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
286 "float4",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
287 &to_octave_str_float4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
288 &to_octave_bin_float4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
289 &from_octave_str_float4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
290 &from_octave_bin_float4};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
291
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
292 /* end type float4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
293
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
294 /* type bytea */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
295
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
296 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
297 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
298 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
299 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
300
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
301 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
302 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
303 uint8NDArray m (dim_vector (nb, 1));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
304
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
305 uint8_t *p = (uint8_t *) m.fortran_vec ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
306 for (octave_idx_type i = 0; i < nb; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
307 *(p++) = uint8_t (*(c++));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
308
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
309 ov = octave_value (m);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
310
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
311 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
312 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
313
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
314 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
315 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
316 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
317 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
318
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
319 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
320 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
321 uint8NDArray b = ov.uint8_array_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
322
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
323 if (! error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
324 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
325 dim_vector dv = b.dims ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
326 if (dv.length () > 2 || (dv(0) > 1 && dv(1) > 1))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
327 error ("bytea representation must be one-dimensional");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
328 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
329
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
330 if (error_state)
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 error ("can not convert octave_value to bytea representation");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
333 return 1;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
336 octave_idx_type nl = b.numel ();
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 for (int i = 0; i < nl; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
339 val.push_back (b(i).value ());
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 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
342 }
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 oct_pq_conv_t conv_bytea = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
345 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
346 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
347 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
348 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
349 false,
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 "bytea",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
352 &to_octave_str_bytea,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
353 &to_octave_bin_bytea,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
354 &from_octave_str_bytea,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
355 &from_octave_bin_bytea};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
356
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
357 /* end type 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 /* type text */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
360
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
361 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
362 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
363 return 1;
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
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
366 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
367 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
368 std::string s (c, nb);
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 ov = octave_value (s);
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 return 0;
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
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
375 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
376 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
377 return 1;
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
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
380 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
381 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
382 std::string s = ov.string_value ();
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 if (error_state)
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 error ("can not convert octave_value to string");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
387 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
388 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
389
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
390 octave_idx_type l = s.size ();
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 for (int i = 0; i < l; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
393 val.push_back (s[i]);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
395 return 0;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
398 oct_pq_conv_t conv_text = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
399 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
400 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
401 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
402 false,
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 "text",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
406 &to_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
407 &to_octave_bin_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
408 &from_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
409 &from_octave_bin_text};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
410
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
411 /* end type text */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
412
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
413 /* type varchar */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
414
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
415 oct_pq_conv_t conv_varchar = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
416 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
417 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
418 oct_pq_conv_cache_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 (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
435 oct_pq_conv_cache_t (),
11394
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 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
439 "bpchar",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
440 &to_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
441 &to_octave_bin_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
442 &from_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
443 &from_octave_bin_text};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
444
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
445 /* end type bpchar */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
446
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
447 /* type name */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
448
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
449 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
450 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
451 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
452 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
453
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
454 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
455 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
456 // FIXME: should we check the string in c?
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
457
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
458 std::string s (c, nb);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
459
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
460 ov = octave_value (s);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
461
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
462 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
463 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
464
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
465 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
466 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
467 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
468 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
469
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
470 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
471 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
472 std::string s = ov.string_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
473
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
474 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
475 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
476 error ("can not convert octave_value to string");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
477 return 1;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
480 octave_idx_type l = s.size ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
481
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
482 for (int i = 0; i < l; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
483 val.push_back (s[i]);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
484
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
485 return 0;
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 oct_pq_conv_t conv_name = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
489 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
490 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
491 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
492 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
493 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
494 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
495 "name",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
496 &to_octave_str_name,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
497 &to_octave_bin_name,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
498 &from_octave_str_name,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
499 &from_octave_bin_name};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
500
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
501 /* end type name */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
502
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
503 /* type int2 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
504
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
505 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
506 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
507 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
508 }
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_bin_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 ov = octave_value (octave_int16 (int16_t (be16toh (*((int16_t *) c)))));
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 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
515 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
516
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
517 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
518 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
519 return 1;
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_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
523 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
524 int16_t i2 = ov.int_value ();
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 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
527 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
528 error ("can not convert octave_value to int2 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
529 return 1;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
532 OCT_PQ_PUT(val, int16_t, htobe16 (i2))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
533
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
534 return 0;
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_conv_t conv_int2 = {0, // 26
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
538 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
539 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
540 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
541 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
542 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
543 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
544 "int2",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
545 &to_octave_str_int2,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
546 &to_octave_bin_int2,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
547 &from_octave_str_int2,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
548 &from_octave_bin_int2};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
549
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
550
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
551 /* end type int2 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
552
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
553 /* type int4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
554
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
555 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
556 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
557 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
558 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
559
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
560 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
561 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
562 ov = octave_value (octave_int32 (int32_t (be32toh (*((int32_t *) c)))));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
563
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
564 return 0;
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
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
567 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
568 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
569 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
570 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
571
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
572 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
573 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
574 int32_t i4 = ov.int_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
575
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
576 if (error_state)
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 error ("can not convert octave_value to int4 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
579 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
580 }
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 OCT_PQ_PUT(val, int32_t, htobe32 (i4))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
583
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
584 return 0;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
587 oct_pq_conv_t conv_int4 = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
588 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
589 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
590 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
591 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
592 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
593 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
594 "int4",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
595 &to_octave_str_int4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
596 &to_octave_bin_int4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
597 &from_octave_str_int4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
598 &from_octave_bin_int4};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
599
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
600
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
601 /* end type 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 /* type int8 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
604
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
605 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
606 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
607 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
608 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
609
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
610 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
611 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
612 ov = octave_value (octave_int64 (int64_t (be64toh (*((int64_t *) c)))));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
613
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
614 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
615 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
616
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
617 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
618 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
619 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
620 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
621
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
622 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
623 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
624 int64_t i8 = ov.int64_scalar_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
625
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
626 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
627 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
628 error ("can not convert octave_value to int8 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
629 return 1;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
632 OCT_PQ_PUT(val, int64_t, htobe64 (i8))
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 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
635 }
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 oct_pq_conv_t conv_int8 = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
638 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
639 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
640 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
641 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
642 false,
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 "int8",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
645 &to_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
646 &to_octave_bin_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
647 &from_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
648 &from_octave_bin_int8};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
649
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
650
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
651 /* end type int8 */
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 /* type money */
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 oct_pq_conv_t conv_money = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
656 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
657 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
658 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
659 false,
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 "money",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
663 &to_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
664 &to_octave_bin_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
665 &from_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
666 &from_octave_bin_int8};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
667
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
668 /* end type money */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
669
11429
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
670 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
671 &conv_oid,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
672 &conv_float8,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
673 &conv_float4,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
674 &conv_text,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
675 &conv_varchar,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
676 &conv_bpchar,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
677 &conv_name,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
678 &conv_bytea,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
679 &conv_int2,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
680 &conv_int4,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
681 &conv_int8,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
682 &conv_money};
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
683
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
684 oct_pq_conv_ptrs_t conv_ptrs (OCT_PQ_NUM_CONVERTERS, t_conv_ptrs);