Re: [PATCHES] libpq type system 0.9a
От | Andrew Chernow |
---|---|
Тема | Re: [PATCHES] libpq type system 0.9a |
Дата | |
Msg-id | 47FD69F7.20506@esilo.com обсуждение исходный текст |
Ответ на | Re: [PATCHES] libpq type system 0.9a (Andrew Chernow <ac@esilo.com>) |
Список | pgsql-hackers |
Andrew Chernow wrote: > Tom Lane wrote: >> >> Perhaps we could do a partial exposure, where the exported struct >> declaration contains "public" fields and there are some "private" ones >> after that. >> > > I have another idea. It would remove a boat load of members that would > need to be exposed (may remove them all). > > Can we make a variant of PQmakeEmptyPGresult? Maybe something like this: > > Here is a quick implementation demonstrating the idea. It is very similar to the patches internal dupresult function (handlers/utils.c). /* numParameters, paramDescs, errFields, curBlock, curOffset and spaceLeft * are not assigned at all, initialized to zero. errMsg is handled by * PQmakeEmptyPGresult. */ PGresult *PQdupPGresult( PGconn *conn, PGresult *source, int numAttributes, int ntups) { PGresult *r; if(!source || numAttributes < 0 || ntups < 0) return NULL; r = PQmakeEmptyPGresult(conn, source->resultStatus); if(!r) return NULL; r->binary = source->binary; strcpy(r->cmdStatus, source->cmdStatus); /* assigned by PQmakeEmptyPGresult when conn is not NULL */ if(!conn) { r->noticeHooks = source->noticeHooks; r->client_encoding= source->client_encoding; } r->attDescs = (PGresAttDesc *) pqResultAlloc(r, numAttributes * sizeof(PGresAttDesc), TRUE); if(!r->attDescs) { PQclear(r); return NULL; } r->numAttributes = numAttributes; r->tuples = (PGresAttValue **) malloc(ntups * sizeof(PGresAttValue *)); if(!r->tuples) { PQclear(r); return NULL; } r->ntups = ntups; r->tupArrSize = ntups; return r; } -- Andrew Chernow eSilo, LLC every bit counts http://www.esilo.com/
В списке pgsql-hackers по дате отправления: