Hi,
as I said, I tring implement PREPARE / EXECUTE command for user a
controllable query cache (in TODO: Cache most recent query plan(s)).
I have implement first usable version now (I know that it is not
interesting for current feature-freeze state, but I believe that
it is interesting for next release and for major developers). See:
test=# prepare sel as select * from tab where id = $1 and data like $2 using int, text;
PREPARE
test=# execute sel using 1, '%a';id | data
----+------ 1 | aaaa
(1 row)
test=# prepare ins as insert into tab (data) values($1) using text;
PREPARE
test=# execute ins_tab using 'cccc';
INSERT 18974 1
The queryTree and planTree are save in hash table and in the
TopMemoryContext (Is it good space for this cache?). All is
without change-schema detection (IMHO is user problem if he
changes DB schema and use old cached plan). In future I try
add any 'change-schema' detection (to alter/drop table,rule..etc).
I'am not sure with syntax, now is:
PREPARE name AS optimizable-statement [ USING type, ... ] EXECUTE name [ USING value, ... ]
Comments? Suggestions? (SQL92?)
(Note: I try test speed and speed for cached query plan (select) executed via EXECUTE rise very very up (70% !).)
Karel
----------------------------------------------------------------------
Karel Zak <zakkr@zf.jcu.cz> http://home.zf.jcu.cz/~zakkr/
Docs: http://docs.linux.cz (big docs archive)
Kim Project: http://home.zf.jcu.cz/~zakkr/kim/ (process manager)
FTP: ftp://ftp2.zf.jcu.cz/users/zakkr/ (C/ncurses/PgSQL)
-----------------------------------------------------------------------