# HG changeset patch # User i7tiol # Date 1367142008 0 # Node ID 2c21253d334177697ee5fce91e4015dbeac077f7 # Parent a63a0ead64e328c3e0994093a29bb5bc0cde9f74 Add converter for timestamptz. Formal corrections for passing integer_datetime information. diff -r a63a0ead64e3 -r 2c21253d3341 main/database/DESCRIPTION --- a/main/database/DESCRIPTION Sun Apr 28 05:38:56 2013 +0000 +++ b/main/database/DESCRIPTION Sun Apr 28 09:40:08 2013 +0000 @@ -1,6 +1,6 @@ Name: database Version: 2.1.1 -Date: 2013-04-27 +Date: 2013-04-28 Author: Olaf Till Maintainer: Olaf Till Title: Database. diff -r a63a0ead64e3 -r 2c21253d3341 main/database/doc/dev-postgresql/conversions.tex --- a/main/database/doc/dev-postgresql/conversions.tex Sun Apr 28 05:38:56 2013 +0000 +++ b/main/database/doc/dev-postgresql/conversions.tex Sun Apr 28 09:40:08 2013 +0000 @@ -119,8 +119,7 @@ 1115 & string & yes & -consider encoding (integer or float), NBO, \ldots{} (put off -implementation) \\ +see file timeformats.txt \\ timestamptz & 1184 & diff -r a63a0ead64e3 -r 2c21253d3341 main/database/src/converters.cc --- a/main/database/src/converters.cc Sun Apr 28 05:38:56 2013 +0000 +++ b/main/database/src/converters.cc Sun Apr 28 09:40:08 2013 +0000 @@ -667,7 +667,8 @@ // helpers for time types -static inline octave_value time_8byte_to_octave (const char *c, bool int_dt) +static inline octave_value time_8byte_to_octave (const char *c, + const bool &int_dt) { if (int_dt) { @@ -690,7 +691,7 @@ static inline int time_8byte_from_octave (const octave_value &ov, oct_pq_dynvec_t &val, - bool int_dt) + const bool &int_dt) { if (int_dt) { @@ -756,7 +757,7 @@ int to_octave_bin_timestamp (const octave_pq_connection &conn, const char *c, octave_value &ov, int nb) { - ov = time_8byte_to_octave (c, conn.integer_datetimes); + ov = time_8byte_to_octave (c, conn.get_integer_datetimes ()); return 0; } @@ -770,7 +771,7 @@ int from_octave_bin_timestamp (const octave_pq_connection &conn, const octave_value &ov, oct_pq_dynvec_t &val) { - return (time_8byte_from_octave (ov, val, conn.integer_datetimes)); + return (time_8byte_from_octave (ov, val, conn.get_integer_datetimes ())); } oct_pq_conv_t conv_timestamp = {0, @@ -788,6 +789,23 @@ /* end type timestamp */ +/* type timestamptz */ + +oct_pq_conv_t conv_timestamptz = {0, + 0, + oct_pq_el_oids_t (), + oct_pq_conv_cache_t (), + false, + false, + false, + "timestamptz", + &to_octave_str_timestamp, + &to_octave_bin_timestamp, + &from_octave_str_timestamp, + &from_octave_bin_timestamp}; + +/* end type timestamptz */ + oct_pq_conv_t *t_conv_ptrs[OCT_PQ_NUM_CONVERTERS] = {&conv_bool, &conv_oid, &conv_float8, @@ -801,6 +819,7 @@ &conv_int4, &conv_int8, &conv_money, - &conv_timestamp}; + &conv_timestamp, + &conv_timestamptz}; oct_pq_conv_ptrs_t conv_ptrs (OCT_PQ_NUM_CONVERTERS, t_conv_ptrs); diff -r a63a0ead64e3 -r 2c21253d3341 main/database/src/converters.h --- a/main/database/src/converters.h Sun Apr 28 05:38:56 2013 +0000 +++ b/main/database/src/converters.h Sun Apr 28 09:40:08 2013 +0000 @@ -32,7 +32,7 @@ #include "wrap_endian.h" -#define OCT_PQ_NUM_CONVERTERS 14 +#define OCT_PQ_NUM_CONVERTERS 15 typedef std::vector oct_pq_dynvec_t; diff -r a63a0ead64e3 -r 2c21253d3341 main/database/src/pq_connection.h --- a/main/database/src/pq_connection.h Sun Apr 28 05:38:56 2013 +0000 +++ b/main/database/src/pq_connection.h Sun Apr 28 09:40:08 2013 +0000 @@ -51,7 +51,7 @@ oct_pq_name_conv_map_t name_conv_map; - bool integer_datetimes; + const bool &get_integer_datetimes (void) const { return integer_datetimes; } // Octave internal stuff @@ -101,6 +101,9 @@ // returns zero on success int octave_pq_get_enum_types (void); + // server configuration + bool integer_datetimes; + DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA }; diff -r a63a0ead64e3 -r 2c21253d3341 main/database/src/pq_conninfo.cc --- a/main/database/src/pq_conninfo.cc Sun Apr 28 05:38:56 2013 +0000 +++ b/main/database/src/pq_conninfo.cc Sun Apr 28 09:40:08 2013 +0000 @@ -71,5 +71,5 @@ return retval; } - return octave_value (oct_pq_conn.integer_datetimes); + return octave_value (oct_pq_conn.get_integer_datetimes ()); }