-
- Downloads
Allow LEAKPROOF functions for better performance of security views.
We don't normally allow quals to be pushed down into a view created with the security_barrier option, but functions without side effects are an exception: they're OK. This allows much better performance in common cases, such as when using an equality operator (that might even be indexable). There is an outstanding issue here with the CREATE FUNCTION / ALTER FUNCTION syntax: there's no way to use ALTER FUNCTION to unset the leakproof flag. But I'm committing this as-is so that it doesn't have to be rebased again; we can fix up the grammar in a future commit. KaiGai Kohei, with some wordsmithing by me.
Showing
- doc/src/sgml/catalogs.sgml 12 additions, 0 deletionsdoc/src/sgml/catalogs.sgml
- doc/src/sgml/ref/alter_function.sgml 12 additions, 1 deletiondoc/src/sgml/ref/alter_function.sgml
- doc/src/sgml/ref/create_function.sgml 18 additions, 1 deletiondoc/src/sgml/ref/create_function.sgml
- doc/src/sgml/rules.sgml 14 additions, 0 deletionsdoc/src/sgml/rules.sgml
- src/backend/catalog/pg_aggregate.c 1 addition, 0 deletionssrc/backend/catalog/pg_aggregate.c
- src/backend/catalog/pg_proc.c 2 additions, 0 deletionssrc/backend/catalog/pg_proc.c
- src/backend/commands/functioncmds.c 38 additions, 2 deletionssrc/backend/commands/functioncmds.c
- src/backend/commands/proclang.c 3 additions, 0 deletionssrc/backend/commands/proclang.c
- src/backend/commands/typecmds.c 1 addition, 0 deletionssrc/backend/commands/typecmds.c
- src/backend/optimizer/path/allpaths.c 2 additions, 9 deletionssrc/backend/optimizer/path/allpaths.c
- src/backend/optimizer/util/clauses.c 140 additions, 0 deletionssrc/backend/optimizer/util/clauses.c
- src/backend/parser/gram.y 6 additions, 1 deletionsrc/backend/parser/gram.y
- src/backend/utils/cache/lsyscache.c 19 additions, 0 deletionssrc/backend/utils/cache/lsyscache.c
- src/bin/pg_dump/pg_dump.c 31 additions, 2 deletionssrc/bin/pg_dump/pg_dump.c
- src/include/catalog/catversion.h 1 addition, 1 deletionsrc/include/catalog/catversion.h
- src/include/catalog/pg_class.h 1 addition, 1 deletionsrc/include/catalog/pg_class.h
- src/include/catalog/pg_proc.h 2418 additions, 2415 deletionssrc/include/catalog/pg_proc.h
- src/include/catalog/pg_proc_fn.h 1 addition, 0 deletionssrc/include/catalog/pg_proc_fn.h
- src/include/optimizer/clauses.h 2 additions, 0 deletionssrc/include/optimizer/clauses.h
- src/include/parser/kwlist.h 1 addition, 0 deletionssrc/include/parser/kwlist.h
Loading
Please register or sign in to comment