Re: PyGreSQL inserttable patch - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: PyGreSQL inserttable patch |
Date | |
Msg-id | 200212060321.gB63LOp25155@candle.pha.pa.us Whole thread Raw |
In response to | PyGreSQL inserttable patch ("Christoph Zwerschke" <zwerschke@zuv.uni-heidelberg.de>) |
List | pgsql-patches |
Function updated. I assume you wanted to replace pg_inserttable in pgmodule.c with your version, which I have done. As for your comment about COPY BINARY, binary is not portable between machines so I can't see why we would perfer that. Is that something that we would never do between machines? --------------------------------------------------------------------------- Christoph Zwerschke wrote: > PyGreSQL inserttable patch > ===================== > > I suggested an improvement of the inserttable in the PyGreSQL interface > already in January, but seemingly it was never implemented. I was told this > is the right place to get patches in for PyGreSQL, so I'm reposting my patch > here. > > I consider the inserttable methode essential in populating the database > because of its benefits in performance compared to insert, so I think this > patch is quite essential. The attachment is an improved version of the > corresponding pg_inserttable function in pgmodule.c, which fixes the > following problems: > > * The function raised exceptions because PyList_GetItem was used beyond the > size of the list. This was checked by comparing the result with NULL, but > the exception was not cleaned up, which could result in mysterious errors in > the following Python code. Instead of clearing the exception using > PyErr_Clear or something like that, I avoided throwing the exception at all > by at first requesting the size of the list. Using this opportunity, I also > checked the uniformity of the size of the rows passed in the lists/tuples. > The function also accepts (and silently ignores) empty lists and sublists. > * Python "None" values are now accepted and properly converted to PostgreSQL > NULL values > * The function now generates an error message in case of a line buffer > overflow > * It copes with tabulators, newlines and backslashes in strings now > * Rewrote the buffer filling code which should now run faster by avoiding > unnecessary string copy operations forth and back > > [Side Mark: I think the following should be added to the to do list: "Write > an option for inserttable which uses 'copy binary from' instead of 'copy > from.'" This could speed up things considerably. In particular, numbers > would not be needed to be converted to strings forth and back. This is a > pretty difficult and laborious task and I can't do it. However, it should be > annotated as a possible 'to do'.] > > Christoph Zwerschke > Zentrale Universitaetsverwaltung Heidelberg [ Attachment, skipping... ] > > ---------------------------(end of broadcast)--------------------------- > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073
pgsql-patches by date: