Search Postgresql Archives

Re: what is the date format in binary query results

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Merlin Moncure wrote:
On Dec 12, 2007 2:14 AM, Samantha Atkins <sjatkins@xxxxxxx> wrote:
This brings up a second question.  How should I do byte order
conversion for 8 byte ints?  I can't use hton ntoh routines as they
max out at 32 bits.  Is there a better way?  Also, are floating point
numbers guaranteed uniform?

If any one knows a a clean code example of binary binding of
parameters and binary extraction of results for all major types in C
against lippq that would be a very useful thing to have in the
standard docs.

We are working on a patch (not necessarily to be migrated with the
source code) to allow simplified binding of binary types to native C
types.  You can see an older version here: it has examples how to read
off a lot of the types in binary.  We should have a new patch in a day
or two that should demonstrate how to read the rest of the types in
binary.  We also handled 64 bit ints...

the patch is here
http://archives.postgresql.org/pgsql-patches/2007-12/msg00014.php

if you are patient we can provide examples for all the basic built in
types, including possibly arrays...

merlin

p.s  don't top post, but I dig Ron Paul :-)



This is from the patch merlin mentioned.

static unsigned int *swap8(void *outp, void *inp, int tonet)
{
  static int n = 1;
  unsigned int *in = (unsigned int *)inp;
  unsigned int *out = (unsigned int *)outp;

  /* swap when needed */
  if(*(char *)&n == 1)
  {
    out[0] = (unsigned int)(tonet ? htonl(in[1]) : ntohl(in[1]));
    out[1] = (unsigned int)(tonet ? htonl(in[0]) : ntohl(in[0]));
  }
  else
  {
    out[0] = in[0];
    out[1] = in[1];
  }

  return out;
}

// example
if(PQfformat(res, field_num) == 1)
{
  long long n;
  swap8(&n, PQgetvalue(res, 0, 0), 0);
  printf("%lld\n", n);
}

It will works with doubles as well.

andrew

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to majordomo@xxxxxxxxxxxxxx so that your
      message can get through to the mailing list cleanly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux