From: | Matthieu Imbert <matthieu(dot)imbert(at)ens-lyon(dot)fr> |
---|---|
To: | Matthieu Imbert <matthieu(dot)imbert(at)ens-lyon(dot)fr>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: binary representation of datatypes |
Date: | 2008-10-21 11:37:44 |
Message-ID: | 48FDBF08.4080200@ens-lyon.fr |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Michael Meskes wrote:
> On Tue, Oct 21, 2008 at 10:21:38AM +0200, Matthieu Imbert wrote:
>> I would like to be able to get results from SQL commands directly in a
>> binary format, instead of a textual one. Actually, I want to be able to
>> get timestamps with their full precision (microsecond).
>
> Are you sure you cannot get those in textual mode? If so I wonder why I got
> some numbers in a quick test:
>
> ...
> [NO_PID]: ecpg_execute on line 37: query: select * from date_test where d = $1 ; with 1 parameter(s) on connection regress1
> [NO_PID]: sqlca: code: 0, state: 00000
> [NO_PID]: ecpg_execute on line 37: using PQexecParams
> [NO_PID]: sqlca: code: 0, state: 00000
> [NO_PID]: free_params on line 37: parameter 1 = 1966-01-17
> [NO_PID]: sqlca: code: 0, state: 00000
> [NO_PID]: ecpg_execute on line 37: correctly got 1 tuples with 2 fields
> [NO_PID]: sqlca: code: 0, state: 00000
> [NO_PID]: ecpg_get_data on line 37: RESULT: 1966-01-17 offset: -1; array: yes
> [NO_PID]: sqlca: code: 0, state: 00000
> [NO_PID]: ecpg_get_data on line 37: RESULT: 2000-07-12 17:34:29.140787 offset: -1; array: yes
> [NO_PID]: sqlca: code: 0, state: 00000
> ...
>
> What do I miss here?
>
> Michael
Yes microseconds are available in textual mode but i do want to use binary mode. Let me explain why:
- my data will be time series. So typical requests will return lots of timestamped data (mainly floats or int).
- after extraction i need to have all timestamps stored in format convenient for calculations. I can accommodate different formats
(for example: number of microseconds since 2000-01-01, or a structure similar to pg_tm (but with microsecond precision), or a
time-format similar to one defined in rfc1305), but definitely storing timestamps as text is a no go for me.
so i have two choices:
scenario 1 - parse the textual representation of all results of requests to the database and convert textual timestamps to a binary
format that i choose among those ones (number of microseconds since 2000-01-01, or a structure similar to pg_tm (but with
microsecond precision), or a time-format similar to one defined in rfc1305, or something else)
or
scenario 2 - directly use pgsql binary timestamp format. I think the latter is far more efficient. I'm new to postgresql, but from
what i understand, here are the conversions involved in both scenarios (hopping that my ascii art won't be garbled by your mail
clients ;-) :
scenario 1:
.---------. .----------. .---------. .----------. .--------------. .----------. .---------.
|timestamp| |pgsql | |timestamp| |pgsql | |timestamp | |my | |my |
|storage |->|internal |->|storage |->|network |->|as |->|timestamp |->|timestamp|
|in | |to | |in | |to | |textual | |conversion| |format |
|database | |network | |network | |textual | |representation| |routines | | |
|backend | |conversion| | | |conversion| | | | | | |
| | |function | | | |function | | | | | | |
'---------' '----------' '---------' '----------' '--------------' '----------' '---------'
scenario 2:
.---------. .----------. .---------. .----------. .---------.
|timestamp| |pgsql | |timestamp| |pgsql | |timestamp|
|storage |->|internal |->|storage |->|network |->|official |
|in | |to | |in | |to | |format |
|database | |network | |network | |offical | | |
|backend | |conversion| | | |conversion| | |
| | |function | | | |function | | |
'---------' '----------' '---------' '----------' '---------'
if i'm correct, it seems obvious that the second scenario is more efficient (and less ugly).
In scenario 2, when talking about timestamp 'official' format, i mean timestamp expressed as number of microseconds since
2000-01-01. But of course, it only deserves this name 'official' if it is guaranteed to stay the same across postgresql versions and
platforms
--
Matthieu
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2008-10-21 11:41:11 | Re: SSL cleanups/hostname verification |
Previous Message | Ted Wong | 2008-10-21 11:33:04 | TSEARCH2 Thesaurus limitations |