Re: ECPG patch N+1, fix auto-prepare
От | Boszormenyi Zoltan |
---|---|
Тема | Re: ECPG patch N+1, fix auto-prepare |
Дата | |
Msg-id | 4B278CD7.6010803@cybertec.at обсуждение исходный текст |
Ответ на | Re: ECPG patch 4.1, out-of-scope cursor support in native mode (Boszormenyi Zoltan <zb@cybertec.at>) |
Ответы |
Re: ECPG patch N+1, fix auto-prepare
|
Список | pgsql-hackers |
Hi, here's another patch that aims to fix auto-prepare. The reason is, that in the project porting from Informix, a small test case that used a cursor and two small SELECTs issued for every record retrieved by the cursor showed that for this case, the ESQL compiled binary finished about 60% faster then the ECPG compiled counterpart running against PostgreSQL. The cursor retrieved a little over 60'000 records. We have modified the test code to prepare the two SELECTs and now the new test code was faster then the ESQL/Informix code, parsing and planning the two small SELECTs had such an accumulated runtime effect. Then we looked at ECPG and discovered that it already has the auto-prepare feature, and tried it using "ecpg -r prepare". However, it turned out that the auto-prepare feature is over-zealous, it tries to prepare statements that are rejected by the server, returning -400 (ECPG_PGSQL). One example is char *sqlstr = "SELECT ..."; EXEC SQL PREPARE stmt1 FROM :sqlstr; EXEC SQL DECLARE cur1 CURSOR FOR stmt1; The attached patch is an attempt to make the preprocessor only pass ECPGst_prepnormal when it's definitely appropriate, i.e. only for DELETE, INSERT, UPDATE and SELECT(-like) statements in the grammar. Comments? Best regards, Zoltán Böszörményi -- Bible has answers for everything. Proof: "But let your communication be, Yea, yea; Nay, nay: for whatsoever is more than these cometh of evil." (Matthew 5:37) - basics of digital technology. "May your kingdom come" - superficial description of plate tectonics ---------------------------------- Zoltán Böszörményi Cybertec Schönig & Schönig GmbH http://www.postgresql.at/
Вложения
В списке pgsql-hackers по дате отправления: