>>>>> "T" == T L <tinlyx@xxxxxxxxx> writes: T> //problem lines!!! //either elog crashes pg server T> char *buf = pnstrdup(ptr->key.val.string.val, T> ptr-> key.val.string.len); T> elog(NOTICE, "print_kv_pair(): k = %s", T> (ptr->key).val.string.val); //debug It doesn't help to make a null-terminated copy of the string if you're then just going to try and print the original. elog(NOTICE, "print_kv_pair(): k = %s", buf); T> elog(NOTICE, "print_kv_pair(): v = %s", T> DatumGetCString(DirectFunctionCall1(numeric_out, T> NumericGetDatum(ptr->value.val.numeric))) ); //debug That should work, _provided_ that value.type == jbvNumeric - did you consider checking that first? -- Andrew (irc:RhodiumToad)