Using timestamp(tz) in C functions

Поиск
Список
Период
Сортировка
От Keith Fiske
Тема Using timestamp(tz) in C functions
Дата
Msg-id CAG1_KcC8DTapmAUXE4M2XNASKyqDAxa==ObhYVPCu2iLbd_8UA@mail.gmail.com
обсуждение исходный текст
Ответы Re: Using timestamp(tz) in C functions  (Adrian Klaver <adrian.klaver@aklaver.com>)
Re: Using timestamp(tz) in C functions  (Vitaly Burovoy <vitaly.burovoy@gmail.com>)
Список pgsql-general
Working on trying to get a C version of the maintenance function for my pg_partman extension working so I can hopefully make it more flexible and efficient.

https://github.com/keithf4/pg_partman/blob/master/sql/functions/run_maintenance.sql

Up until this point I've just been using SPI and the Datum conversion functions (DatumGetCString, DatumGetInt32) to get string and numeric data out of tables and things have been working fine. I'm at the first point in that function where I'll need to start dealing with timestamp data.

https://gist.github.com/keithf4/81c32bf8b689c74b20c10ad8c91d45a3#file-pg_partman_bgw-c-L532

There's what I've got working so far and links directly to the area where I'm having a problem. I found the DatumGetTimeTzADTP() function and the TimeTzADT data type looking through the source and that seems to be exactly what I'm looking for. However, when I get to the point of trying to simply use the time value in that variable (line 544), Postgres segfaults. So far I've just been trying to print the value out to the log to ensure I'm pulling it out correctly. The "time" value of the struct appears to be an int64, so I thought %ld would be the correct, but even using %d or %s fails.

You can see in my original plpgsql function how I eventually intend to use the timestamp values. Here's a link directly to the equivalent section

https://github.com/keithf4/pg_partman/blob/master/sql/functions/run_maintenance.sql#L139

So, not sure if I'm even going about this the right manner for the way I intend to use the timestamp values. Still fairly new to C and getting use to postgres internals. Any help, or even an example of using timstamp data pulled from a table in C with SPI, would be great.

Thanks!

--
Keith Fiske
Database Administrator
OmniTI Computer Consulting, Inc.
http://www.keithf4.com

В списке pgsql-general по дате отправления:

Предыдущее
От: "D'Arcy J.M. Cain"
Дата:
Сообщение: Re: Uber migrated from Postgres to MySQL
Следующее
От: Adrian Klaver
Дата:
Сообщение: Re: Using timestamp(tz) in C functions