Hi All, While working on partition-wise join, I had to examine Relids objects many times. Printing the Bitmapset::words[] in binary format and then inferring the relids takes time and is error prone. Instead I wrote a function bms_to_char() which allocates a StringInfo, calls outBitmapset() to decode Bitmapset as a set of integers and returns the string. In order to examine a Relids object all one has to do is execute 'p bms_to_char(bms_object) under gdb.
Is there a way, this can be included in the code? If it's available in the code, developers don't have to apply the patch and compile it for debugging. -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index 29b7712..b4cae11 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -93,20 +93,22 @@ outNode(str, node->fldname)) /* Write a bitmapset field */ #define WRITE_BITMAPSET_FIELD(fldname) \ (appendStringInfo(str, " :" CppAsString(fldname) " "), \ _outBitmapset(str, node->fldname)) #define booltostr(x) ((x) ? "true" : "false") +char *bms_to_char(const Bitmapset *bms); + /* * _outToken * Convert an ordinary string (eg, an identifier) into a form that * will be decoded back to a plain token by read.c's functions. * * If a null or empty string is given, it is encoded as "<>". */ static void _outToken(StringInfo str, const char *s) @@ -204,20 +206,31 @@ _outBitmapset(StringInfo str, const Bitmapset *bms) } /* for use by extensions which define extensible nodes */ void outBitmapset(StringInfo str, const Bitmapset *bms) { _outBitmapset(str, bms); } /* + * TODO: remove, used for debugging through gdb. + */ +char * +bms_to_char(const Bitmapset *bms) +{ + StringInfo str = makeStringInfo(); + outBitmapset(str, bms); + return str->data; +} + +/* * Print the value of a Datum given its type. */ void outDatum(StringInfo str, Datum value, int typlen, bool typbyval) { Size length, i; char *s; length = datumGetSize(value, typbyval, typlen);
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers