Re: ECPG patch N+1, fix auto-prepare
От | Boszormenyi Zoltan |
---|---|
Тема | Re: ECPG patch N+1, fix auto-prepare |
Дата | |
Msg-id | 4B27BE8D.50509@cybertec.at обсуждение исходный текст |
Ответ на | Re: ECPG patch N+1, fix auto-prepare (Michael Meskes <meskes@postgresql.org>) |
Ответы |
Re: ECPG patch N+1, fix auto-prepare
|
Список | pgsql-hackers |
Michael Meskes írta: > On Tue, Dec 15, 2009 at 02:19:19PM +0100, Boszormenyi Zoltan wrote: >> here's another patch that aims to fix auto-prepare. >> ... >> --- pgsql.6/src/interfaces/ecpg/preproc/output.c 2009-12-15 13:12:37.000000000 +0100 >> *************** hashline_number(void) >> *** 106,112 **** >> } >> >> void >> ! output_statement(char *stmt, int whenever_mode, enum ECPG_statement_type st) >> { >> >> fprintf(yyout, "{ ECPGdo(__LINE__, %d, %d, %s, %d, ", compat, force_indicator, connection ? connection : "NULL",questionmarks); >> --- 106,112 ---- >> } >> >> void >> ! output_statement(char *stmt, int whenever_mode, enum ECPG_statement_type st, int auto_prepare) >> { >> >> fprintf(yyout, "{ ECPGdo(__LINE__, %d, %d, %s, %d, ", compat, force_indicator, connection ? connection : "NULL",questionmarks); > > Why do you add another argument to output_statement? You should easily be able > to use the existing ECPG_statement_type argument for this. How about changing > ECPGst_normal to ECPGst_normal and ECPGst_nonprep or something like this? Or > did I miss something? > > Besides I don't think it's a good idea to create a local variable overriding a > global one with the same name. OK, here's another approach. output_statement()'s interface is kept as the original, and not this function decides which value it uses. I also introduced static char *ecpg_statement_type_name[] for the textual names of the ECPGst_* symbols to keep the preprocessed code readable, and minimize the impact on the regression tests. So output_statement() always emits ECPGst_* symbols in the preprocessed code instead of ECPGst_normal/prepnormal and numeric value for the other two cases. This way only 7 regression tests' source has changed instead of 45... There are less 1 -> ECPGst_execute and 2 -> ECPGst_exec_immediate changes than ECPGst_normal -> 0 changes would have been if I chose emitting the numeric value. Is it acceptable? 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 по дате отправления: