annotate main/database/src/pq_conninfo.cc @ 11667:2c21253d3341 octave-forge

Add converter for timestamptz. Formal corrections for passing integer_datetime information.
author i7tiol
date Sun, 28 Apr 2013 09:40:08 +0000
parents 7575dc1c0b06
children 4f35a79fa79a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11659
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
1 /*
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
2
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
3 Copyright (C) 2013 Olaf Till <i7tiol@t-online.de>
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
4
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
5 This program is free software; you can redistribute it and/or modify
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
6 it under the terms of the GNU General Public License as published by
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
7 the Free Software Foundation; either version 3 of the License, or
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
8 (at your option) any later version.
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
9
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
10 This program is distributed in the hope that it will be useful,
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
13 GNU General Public License for more details.
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
14
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
15 You should have received a copy of the GNU General Public License
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
16 along with this program; If not, see <http://www.gnu.org/licenses/>.
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
17
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
18 */
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
19
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
20 #include <octave/oct.h>
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
21
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
22 #include "pq_connection.h"
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
23
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
24 // PKG_ADD: autoload ("pq_conninfo", "pq_interface.oct");
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
25
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
26 DEFUN_DLD (pq_conninfo, args, ,
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
27 "-*- texinfo -*-\n\
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
28 @deftypefn {Loadable Function} {@var{val} =} pq_conninfo (@var{connection}, @var{label})\n\
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
29 Retrieves connection information for postgresql connection @var{connection}, specified by the string @var{label}, and returns the value of this information in @var{val}. The type of @var{val} depends on the requested information. Currently, the only recognized @var{label} is @code{'integer_datetimes'}; @var{val} is @code{true} if 8-byte date and time values are stored as integer in the server, and @code{false} if they are stored as @code{double} (which is depricated).\n\
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
30 @end deftypefn")
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
31 {
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
32 std::string fname ("pq_conninfo");
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
33
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
34 octave_value retval;
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
35
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
36 if (args.length () != 2 ||
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
37 args(0).type_id () != octave_pq_connection::static_type_id ())
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
38 {
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
39 print_usage ();
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
40
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
41 return retval;
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
42 }
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
43
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
44 std::string label (args(1).string_value ());
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
45
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
46 if (error_state)
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
47 {
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
48 error ("%s: second argument can not be converted to a string",
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
49 fname.c_str ());
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
50
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
51 return retval;
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
52 }
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
53
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
54 if (label.compare ("integer_datetimes"))
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
55 {
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
56 error ("%s: unrecognized label %s", fname.c_str (), label.c_str ());
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
57
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
58 return retval;
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
59 }
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
60
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
61 octave_base_value& rep = const_cast<octave_base_value&> (args(0).get_rep ());
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
62
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
63 octave_pq_connection &oct_pq_conn = dynamic_cast<octave_pq_connection&> (rep);
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
64
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
65 PGconn *conn = oct_pq_conn.octave_pq_get_conn ();
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
66
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
67 if (! conn)
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
68 {
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
69 error ("%s: connection not open", fname.c_str ());
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
70
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
71 return retval;
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
72 }
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
73
11667
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11659
diff changeset
74 return octave_value (oct_pq_conn.get_integer_datetimes ());
11659
7575dc1c0b06 Obtain connection information 'integer_datetimes'.
i7tiol
parents:
diff changeset
75 }