PyGreSQL inserttable patch
От | Christoph Zwerschke |
---|---|
Тема | PyGreSQL inserttable patch |
Дата | |
Msg-id | 002901c295f5$953bde10$271f11ac@zwerschke обсуждение исходный текст |
Ответы |
Re: PyGreSQL inserttable patch
Re: PyGreSQL inserttable patch |
Список | pgsql-patches |
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
Вложения
В списке pgsql-patches по дате отправления: