Log In - Home Page

CommitFest 2014-12: Activity Log

RSS - Back to CommitFest

Time User Patch Activity Type Details
2015-01-19 20:29:12 rhaas Abbreviated keys (Was: Sort support for text with strxfrm() poor man's keys) Patch Edited Committer = Robert Haas
2015-01-19 20:29:08 rhaas Abbreviated keys (Was: Sort support for text with strxfrm() poor man's keys) Patch Edited Patch Status = Committed, Date Closed = 2015-01-19
2015-01-19 07:11:07 michael-kun Add restore_command_retry_interval option to control timeout of restore_command nonzero status code Patch Edited Patch Status = Needs Review
2015-01-19 05:06:22 ringerc Send server_version_num in reply to startup packet (GUC_REPORT) New Comment Patch: Initial version. (Message-ID: 54AF7557.9090905@2ndquadrant.com)
2015-01-19 05:06:22 ringerc Send server_version_num in reply to startup packet (GUC_REPORT) New Patch Name = Send server_version_num in reply to startup packet (GUC_REPORT), Topic = Server Features, Patch Status = Needs Review, Author = Craig Ringer, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2015-01-19 03:40:39 petere Fix installation of shared libraries on Windows (mingw) Patch Edited Patch Status = Committed, Committer = Peter Eisentraut, Date Closed = 2015-01-19
2015-01-19 01:53:52 michael-kun fsync $PGDATA recursively at startup Patch Edited Moved To CommitFest = 2015-02, Topic = Bug Fixes
2015-01-19 01:51:52 michael-kun Memory accounting towards memory-bounded HashAgg Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-19
2015-01-18 02:49:31 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Comment: Can we cut scope, by removing the problematic exclusion constraint support for the IGNORE variant? (Message-ID: CAM3SWZTkHOwyA5A9ib=uVf0Vs326yoCBdpp_NYkDjM2_-ScxFA@mail.gmail.com)
2015-01-17 11:16:54 andresfreund advance local xmin more aggressively Patch Edited Patch Status = Committed, Committer = Heikki Linnakangas, Date Closed = 2015-01-16
2015-01-16 23:24:05 michael-kun Fillfactor for GIN indexes Patch Edited Patch Status = Rejected, Date Closed = 2015-01-16
2015-01-16 23:21:26 tgl explain_sortorder-patch Patch Edited Name = Print sort ordering options in EXPLAIN, Patch Status = Committed, Date Closed = 2015-01-16
2015-01-16 22:59:20 tgl explain_sortorder-patch Patch Edited Committer = Tom Lane
2015-01-16 17:49:18 andresfreund Add restore_command_retry_interval option to control timeout of restore_command nonzero status code New Comment Review: Has wider implications than intended. (Message-ID: 20150116174441.GK16991@alap3.anarazel.de)
2015-01-16 17:49:06 andresfreund Add restore_command_retry_interval option to control timeout of restore_command nonzero status code Patch Edited Patch Status = Waiting on Author
2015-01-16 16:51:03 andresfreund speedup tidbitmap patch: cache page Patch Edited Patch Status = Committed, Committer = Andres Freund, Date Closed = 2015-01-16
2015-01-16 13:20:05 michael-kun Do not vacuum pgbench tables if they do not exist when pgbench -f given Patch Edited Patch Status = Waiting on Author
2015-01-16 13:14:02 michael-kun Additional role attributes Patch Edited Patch Status = Needs Review
2015-01-16 12:46:40 michael-kun Turn recovery.conf parameters into GUCs Patch Edited Patch Status = Needs Review, Date Closed = NULL
2015-01-16 12:44:01 michael-kun Turn recovery.conf parameters into GUCs Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-16
2015-01-16 12:28:56 michael-kun Async execution of postgres_fdw. Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-16
2015-01-16 12:28:50 michael-kun Async execution of postgres_fdw. New Comment Comment: Work still on the way and cannot obviously be committed for this CF, hence moving to next one. (Message-ID: 20150115.165946.256597820.horiguchi.kyotaro@lab.ntt.co.jp)
2015-01-16 12:27:32 michael-kun Memory-bounded HashAgg New Comment Comment: Marking as returned with feedback, patch is incorrect and once corrected performance drops significantly.
2015-01-16 12:27:00 michael-kun Memory-bounded HashAgg Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-16
2015-01-16 12:02:58 michael-kun Allow parallel cores to be used by vacuumdb New Comment Comment: Alvaro is going to have a look at it.
2015-01-16 11:51:46 fuzzycz hashjoin - gracefully increasing NTUP_PER_BUCKET instead of batching New Comment Comment: IMHO we should reject this, as we have no idea how to decide whether it's better than batching (Message-ID: 54B6CB73.8020906@2ndquadrant.com)
2015-01-16 11:50:18 fuzzycz decreasing array_agg memory consumption Patch Edited Patch Status = Needs Review
2015-01-16 11:50:06 fuzzycz decreasing array_agg memory consumption New Comment Patch: v8 - added/fixed a few comments, agree with marking as ready for committer (Message-ID: 54B6E53A.5040808@2ndquadrant.com)
2015-01-16 01:15:40 horiguti Escaping from blocked send() by pg_terminate_backend(). New Comment Comment: This patch became a part of "Overhauling our interrupt handling". (Message-ID: 20150115.150508.111651890.horiguchi.kyotaro@lab.ntt.co.jp)
2015-01-16 01:14:19 horiguti Escaping from blocked send() by pg_terminate_backend(). Patch Edited Patch Status = Rejected
2015-01-16 00:36:53 michael-kun Allow parallel cores to be used by vacuumdb Patch Edited Reviewers = Alvaro Herrera, Sawada Masahiko, Jeff Janes, Amit Kapila
2015-01-15 23:41:42 michael-kun Allow parallel cores to be used by vacuumdb Patch Edited Patch Status = Needs Review, Date Closed = NULL
2015-01-15 23:05:19 abrightwell Additional role attributes New Comment Patch: updated patch - role-attributes-v2.patch (Message-ID: CAKRt6CSx=HOB0XovCfR4VBeh=hoa_AabAfMYNGAYrzUy1ghujg@mail.gmail.com)
2015-01-15 16:48:52 maiku41 explain_sortorder-patch Patch Edited Patch Status = Ready for Committer
2015-01-15 16:48:35 maiku41 explain_sortorder-patch New Comment Review: Remaining issues addressed. Looks good to me. Marking as ready for committer. (Message-ID: CANPAkgsSVaU-9ykbs+T+caGX3=WsxkZ2pXfQzMrnE7SyfkZ_1Q@mail.gmail.com)
2015-01-15 15:09:34 mtimm_01 explain_sortorder-patch Patch Edited Patch Status = Needs Review
2015-01-15 15:09:05 mtimm_01 explain_sortorder-patch New Comment Patch: Version 8, fixing remaining issues (e.g. quoting), adding docs and tests as requested/agreed. (Message-ID: 68A3685D-858C-4EE0-BC59-73447EC49C43@exchange.wwu.de)
2015-01-15 13:22:14 amitkapila Parallel Seq scan Patch Edited Moved To CommitFest = 2015-02, Topic = Server Features
2015-01-15 12:04:57 michael-kun Fillfactor for GIN indexes Patch Edited Patch Status = Ready for Committer
2015-01-15 08:05:01 michael-kun HINT on qualified LHS references in UPDATE .. SET Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-15
2015-01-15 08:02:49 michael-kun Allow parallel cores to be used by vacuumdb Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-15
2015-01-15 08:00:32 michael-kun multivariate statistics Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-15
2015-01-15 07:56:42 michael-kun pg_rewind New Comment Review: A couple of tiny things found on the way. (Message-ID: CAB7nPqS0jtJcbL8FPFYh-P-ffHv1X8NkL=pS5ZuK38G=5W74rQ@mail.gmail.com)
2015-01-15 07:55:44 michael-kun pg_rewind Edit Comment Patch: Patch v5. (Message-ID: 54B63A24.7010708@vmware.com)
2015-01-15 07:55:37 michael-kun pg_rewind New Comment Comment: Patch v5. (Message-ID: 54B63A24.7010708@vmware.com)
2015-01-15 07:54:24 michael-kun DROP PRIVILEGES OWNED Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-15
2015-01-15 07:51:44 michael-kun UPDATE table SET(*)= Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-15
2015-01-15 07:46:27 michael-kun Async execution of postgres_fdw. New Comment Patch: v3 of patch (Message-ID: 20150113.204646.205937470.horiguchi.kyotaro@lab.ntt.co.jp)
2015-01-15 07:45:54 michael-kun Async execution of postgres_fdw. New Comment Patch: v2 of patch (Message-ID: 20150109.173003.218333899.horiguchi.kyotaro@lab.ntt.co.jp)
2015-01-15 07:41:57 michael-kun logical column ordering (WIP) Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-15
2015-01-15 07:39:05 michael-kun Join pushdown support for foreign tables Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-15
2015-01-15 07:31:53 michael-kun Allow TOAST tables to be moved to a different tablespace Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-15
2015-01-15 07:29:04 michael-kun compress method for spgist Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-15
2015-01-15 07:21:34 michael-kun Compression of Full Page Writes Patch Edited Patch Status = Returned with Feedback, Date Closed = 2015-01-15
2015-01-15 07:01:01 michael-kun Reducing lock strength of trigger and foreign key DDL Patch Edited Patch Status = Ready for Committer
2015-01-14 16:31:46 maiku41 explain_sortorder-patch New Comment Comment: Looks good other than quoting issue with collation name. Waiting for doc and test update.
2015-01-14 10:02:25 ams fsync $PGDATA recursively at startup New Patch Name = fsync $PGDATA recursively at startup, Topic = Bug Fixes, Patch Status = Needs Review, Author = Abhijit Menon-Sen, Reviewers = Andres Freund, Committer = Nobody, Date Closed = NULL
2015-01-14 10:02:25 ams fsync $PGDATA recursively at startup New Comment Patch: Initial version. (Message-ID: 20141106122653.GA18963@toroid.org)
2015-01-14 07:49:36 michael-kun Reducing lock strength of trigger and foreign key DDL New Comment Patch: v4 of patch corrected. (Message-ID: CAB7nPqRo1OLQfMgh3vwfUXLD5TRPPXVgxMLJ+VyLj0X8u4DuCA@mail.gmail.com)
2015-01-14 07:49:18 michael-kun Reducing lock strength of trigger and foreign key DDL New Comment Review: Found a couple of tiny issues. Corrected patch myself. (Message-ID: CAB7nPqRo1OLQfMgh3vwfUXLD5TRPPXVgxMLJ+VyLj0X8u4DuCA@mail.gmail.com)
2015-01-13 16:09:34 mtimm_01 explain_sortorder-patch New Comment Patch: Patch using StringInfo. Doc and test updates will follow. (Message-ID: C0983E73-EE08-43A4-9CB5-32B22729BAF6@exchange.wwu.de)
2015-01-13 08:23:20 kandreas Reducing lock strength of trigger and foreign key DDL Patch Edited Patch Status = Needs Review
2015-01-13 08:23:13 kandreas Reducing lock strength of trigger and foreign key DDL New Comment Patch: Fixed docs isolation tests. (Message-ID: 54B4D59B.2040608@proxel.se)
2015-01-12 12:53:59 michael-kun pg_stat_ssl view Patch Edited Patch Status = Needs Review
2015-01-11 04:35:45 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Patch: V2.0 - Revision that adds RLS support. This closes out all open issues with support for/by interrelated features (e.g. inheritance, updatable views). Semantics now seem all but settled. (Message-ID: CAM3SWZQqgONFkkfcXOPwZvmeFbzJWdw+He1akRERmhd4_D0Wsg@mail.gmail.com)
2015-01-11 00:57:04 kandreas BRIN inclusion operator class Patch Edited Patch Status = Waiting on Author
2015-01-11 00:56:57 kandreas BRIN inclusion operator class New Comment Review: Initial review (Message-ID: 54B1C58D.3050500@proxel.se)
2015-01-10 06:10:18 amitkapila Parallel Seq scan New Comment Patch: Integration with Robert's parallel_mode/contexts patch. (Message-ID: CAA4eK1+hfDXBG2fit8BAd2jDADnGhmnNNfrSpqqin19V1XYeng@mail.gmail.com)
2015-01-09 16:00:12 ams pgaudit extension New Comment Patch: Updated to address Stephen's wishlist (Message-ID: 20141229120438.GA13085@toroid.org)
2015-01-09 15:59:28 ams pgaudit extension Patch Edited Patch Status = Needs Review
2015-01-09 15:57:59 ams logical column ordering (WIP) Patch Edited Reviewers = Nobody
2015-01-09 15:57:36 ams logical column ordering (WIP) Patch Edited Reviewers = Abhijit Menon-Sen
2015-01-09 15:56:49 ams Compression of Full Page Writes Patch Edited Reviewers = Abhijit Menon-Sen
2015-01-09 12:29:28 michael-kun pg_rewind New Comment Review: Documentation needs more work. Warning with MSVC compilation. (Message-ID: CAB7nPqQNcb+k7opaCqq6pcPyqbCcrfbt40QzY0qCYmBZHsXgcw@mail.gmail.com)
2015-01-09 12:28:45 michael-kun pg_rewind New Comment Patch: New patch: Addition of MSVC support, removed dependency on regex (Message-ID: 54AEA9FF.1070301@vmware.com)
2015-01-09 12:26:14 michael-kun TABLESAMPLE clause Patch Edited Patch Status = Needs Review
2015-01-09 12:26:07 michael-kun TABLESAMPLE clause New Comment Review: Review of patch 1: simplification of seed generation should be done, compilation errors. (Message-ID: CAB7nPqQtZWe+d+VOmggFik0j9zh50=h4kYmOHGkKebx28JsU_Q@mail.gmail.com)
2015-01-09 12:24:38 michael-kun TABLESAMPLE clause New Comment Patch: New patch, split of refactoring. (Message-ID: 54AEABFC.2010303@2ndquadrant.com)
2015-01-08 15:43:22 maiku41 explain_sortorder-patch New Comment Review: Review of v6 patch. Issues with memory handling. Needs doc and test updates. (Message-ID: CANPAkgvGG2LgRrvc6CtAZrwX7nGe6R6pXdJ6vc9bBMBtE6nnRQ@mail.gmail.com)
2015-01-08 08:03:06 apaan decreasing array_agg memory consumption Patch Edited Patch Status = Waiting on Author
2015-01-08 08:02:54 apaan decreasing array_agg memory consumption New Comment Comment: element checking, behavior of makeArrayResult if release=true while subcontext=false (Message-ID: CACQjQLoYZeBBH3noRoRxafoMbxXpreBCe6JiyYN6iLTSm3Ep2A@mail.gmail.com)
2015-01-08 07:09:40 michael-kun Logical Decoding with timelines Patch Edited Patch Status = Waiting on Author
2015-01-08 07:09:34 michael-kun Logical Decoding with timelines New Comment Review: Heikki: comments about readability (Message-ID: 54A7BF61.9080708@vmware.com)
2015-01-08 07:09:18 michael-kun Logical Decoding with timelines Edit Comment Patch: New patch refactoring a bit the whole. (Message-ID: CA+U5nML1oYzo-CMUMrughcv1v8-U7225f+747RwEUD4yadrMfw@mail.gmail.com)
2015-01-08 07:07:26 michael-kun Logical Decoding with timelines New Comment Review: New patch refactoring a bit the whole. (Message-ID: CA+U5nML1oYzo-CMUMrughcv1v8-U7225f+747RwEUD4yadrMfw@mail.gmail.com)
2015-01-08 07:06:50 michael-kun Logical Decoding with timelines New Comment Review: Heikki: Some refactoring would be nice. (Message-ID: 549040DB.4020007@vmware.com)
2015-01-07 21:15:30 fuzzycz Memory-bounded HashAgg Patch Edited Patch Status = Waiting on Author
2015-01-07 21:15:16 fuzzycz Memory-bounded HashAgg New Comment Review: patch measures hashcontext, not aggcontext (as it should), fix results in significant performance hit (Message-ID: 54AD83E1.1090109@2ndquadrant.com)
2015-01-07 17:06:19 alvherre event triggers: more DROP info Patch Edited Patch Status = Committed, Committer = Álvaro Herrera, Date Closed = 2014-12-30
2015-01-07 16:23:45 mtimm_01 explain_sortorder-patch New Comment Patch: First patch containing the changes Heikki's suggested (Message-ID: 6004A939-59B5-4454-B92C-910A795D901B@exchange.wwu.de)
2015-01-07 15:45:00 fuzzycz decreasing array_agg memory consumption New Comment Comment: marked as 'needs review' as the status was obsolete
2015-01-07 15:44:23 fuzzycz decreasing array_agg memory consumption Patch Edited Patch Status = Needs Review
2015-01-07 13:16:49 michael-kun Fillfactor for GIN indexes Patch Edited Patch Status = Needs Review
2015-01-07 13:16:39 michael-kun Fillfactor for GIN indexes New Comment Patch: Updated patch. Default fillfactor value to 75% is good? This increases default size of index.. (Message-ID: CAB7nPqS8xc--G8qYZzv++iR_FQeOWYKZABAL8NRy5M2Q9cSO0g@mail.gmail.com)
2015-01-07 06:15:19 dilip.kumar pg_basebackup vs. Windows and tablespaces (Extend base backup to include symlink file used to restore symlinks) Patch Edited Patch Status = Ready for Committer
2015-01-07 04:16:25 petere Fix xpath() to return namespace definitions (fixes the issue with nested or repeated xpath()) Patch Edited
2015-01-07 04:16:23 michael-kun Fix xpath() to return namespace definitions (fixes the issue with nested or repeated xpath()) Patch Edited Patch Status = Committed, Committer = Peter Eisentraut, Date Closed = 2015-01-07
2015-01-07 04:13:38 michael-kun Support ORDER BY in CREATE FUNCTION for Set Returning Functions Patch Edited Moved To CommitFest = 2015-02, Topic = Server Features
2015-01-07 04:08:44 michael-kun Compression of Full Page Writes New Comment Patch: Updated patch addressing previous comments. (Message-ID: CAB7nPqQkupnzfJAmT881YQJMsHtnkQCOr8_GyfOCzOjPxChbhw@mail.gmail.com)
2015-01-07 04:08:20 michael-kun Compression of Full Page Writes New Comment Review: Some review from Rahila: concerns about readability, issue with pg_xlogdump and some incorrect comments. (Message-ID: 1420559463860-5833025.post@n5.nabble.com)
2015-01-06 20:25:45 rhodiumtoad Grouping Sets Patch Edited Patch Status = Needs Review
2015-01-06 20:25:25 rhodiumtoad Grouping Sets New Comment Patch: Updated patch. (Message-ID: 87h9w38zhg.fsf@news-spur.riddles.org.uk)
2015-01-06 19:06:48 arnold_s explain_sortorder-patch Edit Comment Comment: WIP (Message-ID: permail-201412231111478954262000006b62-scheffa@message-id.uni-muenster.de)
2015-01-06 19:03:31 arnold_s explain_sortorder-patch New Comment Comment: WIP (Message-ID: http://www.postgresql.org/message-id/permail-201412231111478954262000006b62-scheffa@message-id.uni-muenster.de)
2015-01-06 14:22:16 kaigai ctidscan as an example of custom-scan New Comment Patch: Several fixups according to the comment from Jim Nasby (Message-ID: 9A28C8860F777E439AA12E8AEA7694F80109C84E@BPXM15GP.gisp.nec.co.jp)
2015-01-06 14:20:45 kaigai Custom/Foreign-Join-APIs New Comment Patch: fixup a few oversights on the v1 patch. (Message-ID: 9A28C8860F777E439AA12E8AEA7694F80109C88F@BPXM15GP.gisp.nec.co.jp)
2015-01-06 07:53:26 michael-kun TABLESAMPLE clause Patch Edited Patch Status = Waiting on Author
2015-01-06 07:53:17 michael-kun TABLESAMPLE clause New Comment Review: Patch needs a rebase, questions about structure and naming that could be improved IMO. (Message-ID: CAB7nPqTuDAEr00AbapauBB+Ta7UH3z7qfzhtM6z-14h3FgqqVw@mail.gmail.com)
2015-01-06 07:17:59 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} Delete Comment Review: Value locking #2 implementation -- concerns about tuple slot referenced from pre-check index scan having contained tuple replaced before row locking. Spuriously updating potentially unrelated rows may be possible due to lack of a true interlock. (Message-ID: CAM3SWZSd3MU=c9HcP-SxCbUcLvFWT8t9MZCotOJxuE3RbTvd0A@mail.gmail.com)
2015-01-06 07:15:09 michael-kun pg_rewind New Comment Review: Multiple issues found. MSVC needs support, MinGW is broken. (Message-ID: CAB7nPqQce=h=qE64fVit0pBZte-V8QB8Sg77amzApyM6V+MDQg@mail.gmail.com)
2015-01-06 07:14:36 michael-kun pg_rewind Patch Edited Patch Status = Waiting on Author, Reviewers = Satoshi Nagayasu, Michael Paquier
2015-01-06 06:23:01 michael-kun TABLESAMPLE clause Patch Edited Patch Status = Needs Review
2015-01-06 05:54:51 michael-kun Add restore_command_retry_interval option to control timeout of restore_command nonzero status code Patch Edited Patch Status = Ready for Committer
2015-01-06 04:03:56 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Review: Value locking #2 implementation -- concerns about tuple slot referenced from pre-check index scan having contained tuple replaced before row locking. Spuriously updating potentially unrelated rows may be possible due to lack of a true interlock. (Message-ID: CAM3SWZSd3MU=c9HcP-SxCbUcLvFWT8t9MZCotOJxuE3RbTvd0A@mail.gmail.com)
2015-01-05 20:28:38 leopard Add restore_command_retry_interval option to control timeout of restore_command nonzero status code New Comment Patch: Michael Paquier patch (Message-ID: CAB7nPqT_uwHcL-7_7PD9t-aak+Opx+skfU=UhhLviAYjOGje=A@mail.gmail.com)
2015-01-05 17:53:52 heikki pg_rewind Patch Edited Patch Status = Needs Review
2015-01-05 17:53:42 heikki pg_rewind New Comment Patch: New patch version (Message-ID: 54AACC23.1040402@vmware.com)
2015-01-05 15:16:04 atris Support ORDER BY in CREATE FUNCTION for Set Returning Functions New Patch Name = Support ORDER BY in CREATE FUNCTION for Set Returning Functions, Topic = SQL Commands, Patch Status = Needs Review, Author = Atri Sharma, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2015-01-05 15:16:04 atris Support ORDER BY in CREATE FUNCTION for Set Returning Functions New Comment Patch: Initial version. (Message-ID: CAOeZVifqzpj5yafnB9OqXdAypvBrFhV3Am=Q2GAwjk2JgctyVw@mail.gmail.com)
2015-01-05 11:35:58 michael-kun File level incremental backup Patch Edited Moved To CommitFest = 2015-02, Topic = System Administration
2015-01-05 10:50:18 mnencia File level incremental backup New Patch Name = File level incremental backup, Topic = System Administration, Patch Status = Needs Review, Author = Marco Nenciarini, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2015-01-05 10:50:18 mnencia File level incremental backup New Comment Patch: Initial version. (Message-ID: 543D5AA7.9@2ndquadrant.it)
2015-01-05 08:18:53 michael-kun Add restore_command_retry_interval option to control timeout of restore_command nonzero status code Patch Edited Patch Status = Waiting on Author
2015-01-05 08:18:32 michael-kun Add restore_command_retry_interval option to control timeout of restore_command nonzero status code New Comment Review: Patch unable to perform with retry intervals lower than 1s. Rewrote the patch to use TimestampTz instead, fixing at the same time issues here and there.. (Message-ID: CAB7nPqT_uwHcL-7_7PD9t-aak+Opx+skfU=UhhLviAYjOGje=A@mail.gmail.com)
2015-01-04 02:02:02 andresfreund logical column ordering (WIP) Patch Edited Patch Status = Waiting on Author
2015-01-04 02:01:57 andresfreund logical column ordering (WIP) New Comment Comment: Alvaro announced reworking the patch. (Message-ID: 20150104013747.GH1457@alvh.no-ip.org)
2015-01-04 02:00:14 andresfreund Allow parallel cores to be used by vacuumdb Patch Edited Patch Status = Waiting on Author
2015-01-04 02:00:08 andresfreund Allow parallel cores to be used by vacuumdb New Comment Review: Not yet there. (Message-ID: 20150104015713.GG3064@awork2.anarazel.de)
2015-01-04 00:39:30 andresfreund Comment on "lack" of optimization in CacheInvalidateHeapTuple Patch Edited Patch Status = Rejected, Date Closed = 2015-01-04
2015-01-04 00:38:41 andresfreund parallel mode/contexts New Comment Review: Initial review of infrastructure (Message-ID: 20150104003122.GA29301@awork2.anarazel.de)
2015-01-03 20:12:54 muhammad.asif.naeem Perl coding error in msvc build system Patch Edited Reviewers = Nobody
2015-01-03 01:43:37 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Review: Doubts emerge about the ability of any value locking implementation to maintain the useful ON CONFLICT guarantees with exclusion constraints (which might otherwise work with IGNORE). (Message-ID: CAM3SWZR-0oc1AZYkaDgw0QekbFy2PMRRij1AGEmpOG-DwoGm5w@mail.gmail.com)
2015-01-02 14:18:06 amitkapila Allow parallel cores to be used by vacuumdb Patch Edited Patch Status = Ready for Committer
2015-01-02 14:17:51 amitkapila Allow parallel cores to be used by vacuumdb New Comment Patch: cosmetic fixes. (Message-ID: CAA4eK1Jp+u2+46wE8Nmg_gWiO_b7_L1afAwS9awgRkE=DfW_nA@mail.gmail.com)
2014-12-31 14:53:52 kandreas BRIN inclusion operator class Patch Edited Reviewers = Andreas Karlsson
2014-12-31 14:46:40 calvin documentation update for doc/src/sgml/func.sgml New Comment Patch: Treat type names homogeneously. (Message-ID: alpine.DEB.2.10.1412311540180.8764@sto)
2014-12-31 14:05:09 davidrowley Using 128-bit integers for sum, avg and statistics aggregates New Comment Review: aggtransspace and aggmtransspace should only be 48 on machines that support int128. Also can you rename references to int16 to become int128? (Message-ID: CAApHDvoshk1L1r8fCJjf_=OuCwaycnZp4W3C2R-js-sJsFr+Uw@mail.gmail.com)
2014-12-31 14:01:37 davidrowley Using 128-bit integers for sum, avg and statistics aggregates Patch Edited Patch Status = Waiting on Author
2014-12-31 07:29:21 michael-kun BRIN inclusion operator class Patch Edited Reviewers = Nobody
2014-12-30 22:21:26 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Review: Jeff Janes reports concurrency bugs affecting implementation of approach #2 to value locking only (Message-ID: CAMkU=1w8e9Q6ZX3U85RtsyCMpdYWFrvVAO3=uNEvtqiRUzntaQ@mail.gmail.com)
2014-12-30 15:23:12 leopard Add restore_command_retry_interval option to control timeout of restore_command nonzero status code New Comment Patch: Fixed patch by Michael Paquier help (Message-ID: 1419952949.210788827@f171.i.mail.ru)
2014-12-30 12:12:12 leopard Add restore_command_retry_interval option to control timeout of restore_command nonzero status code Patch Edited Patch Status = Needs Review
2014-12-30 12:12:06 leopard Add restore_command_retry_interval option to control timeout of restore_command nonzero status code New Comment Patch: Fixed patch by Michael Paquier help (Message-ID: 1419941421.466548460@f404.i.mail.ru)
2014-12-30 02:51:05 kandreas Allow TOAST tables to be moved to a different tablespace Patch Edited Patch Status = Waiting on Author
2014-12-30 02:50:57 kandreas Allow TOAST tables to be moved to a different tablespace New Comment Review: Initial review with feedback. (Message-ID: 54A2127D.5020907@proxel.se)
2014-12-29 14:27:30 michael-kun BRIN inclusion operator class Patch Edited Reviewers = Michael Paquier
2014-12-29 08:27:05 kandreas Allow TOAST tables to be moved to a different tablespace Patch Edited Reviewers = Andreas Karlsson
2014-12-28 23:20:36 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} Edit Comment Patch: V1.8 - Revision that primarily extends "unique index inference specification" clause to support partial indexes (this is particularly important for UPSERTing with partial unique indexes). (Message-ID: CAM3SWZRg_hTrOL-6_wfe6_d_UcUYc28JfaPsFh_tra76GkkdNw@mail.gmail.com)
2014-12-28 23:20:26 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Patch: V1.7 - Revision that primarily extends "unique index inference specification" clause to support partial indexes (this is particularly important for UPSERTing with partial unique indexes). (Message-ID: CAM3SWZRg_hTrOL-6_wfe6_d_UcUYc28JfaPsFh_tra76GkkdNw@mail.gmail.com)
2014-12-28 21:33:31 jdavis Memory-bounded HashAgg New Comment Comment: More tests (Message-ID: 1419802183.24895.81.camel@jeff-desktop)
2014-12-28 21:09:39 jdavis Memory-bounded HashAgg New Comment Comment: Tests and commentary. (Message-ID: 1419799025.24895.59.camel@jeff-desktop)
2014-12-28 15:20:20 michael-kun Add restore_command_retry_interval option to control timeout of restore_command nonzero status code Patch Edited Patch Status = Waiting on Author
2014-12-28 15:20:12 michael-kun Add restore_command_retry_interval option to control timeout of restore_command nonzero status code New Comment Review: Patch does not work, what it does now is tuning the time standby waits for xlog from stream. Check should be for archive recovery. (Message-ID: CAB7nPqQ491ghag6m6sD6QNZv4V=9fd_G2hvMp6D=fJLyV1X+-g@mail.gmail.com)
2014-12-28 13:58:43 michael-kun Compression of Full Page Writes New Comment Patch: New patch set, make pglz an entirely independent frontend/backend facility and rebase core patch on that. (Message-ID: CAB7nPqQOOzd5FLVkg-SN1cFf5Pi2ky3LTQecoBtS2Ws+jq=A2Q@mail.gmail.com)
2014-12-27 00:24:55 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Comment: Should unique index inference clause formally not care about use of alternative opclasses for available, otherwise-suitable unique indexes? (Message-ID: CAM3SWZQCN6JZ_OKi1GJr8dR_J+BaDiW8xkm235Ww3oaqxhmj1A@mail.gmail.com)
2014-12-27 00:23:36 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} Patch Edited
2014-12-26 18:44:14 leopard Add restore_command_retry_interval option to control timeout of restore_command nonzero status code Patch Edited Patch Status = Needs Review
2014-12-26 18:43:55 leopard Add restore_command_retry_interval option to control timeout of restore_command nonzero status code New Comment Patch: Updated patch by Michael Paquier suggestions (Message-ID: 1419619333.778631968@f256.i.mail.ru)
2014-12-26 13:00:00 davidrowley Using 128-bit integers for sum, avg and statistics aggregates New Comment Review: Some questions that require some discussion. Plus benchmarks of windowing functions (Message-ID: CAApHDvp9ZUC5fUur-_5nJ7VPUYe_G+pcUTb73pvw0k0rH6xgzg@mail.gmail.com)
2014-12-26 10:36:20 sigaev btree_gin and ranges New Comment Patch: split patch to gin's patch and module's patch (Message-ID: 549D3976.70606@sigaev.ru)
2014-12-26 06:16:55 efujita Foreign table inheritance New Comment Patch: Updated 2nd patch to fix a bug in handling ExecRowMarks/ExecAuxRowMarks for foreign tables in inheritance trees (Message-ID: 549CFBD8.50204@lab.ntt.co.jp)
2014-12-25 02:00:11 nmisch group locking New Comment Comment: Other essential thread (Message-ID: CA+TgmoYGpLoJo+LG1beBOs8gdjwjTQ0qdmxsYJ4ihFyJ11Tr-g@mail.gmail.com)
2014-12-25 01:59:03 kaigai ctidscan as an example of custom-scan New Comment Comment: module was relocated to test/modules, instead of contrib (Message-ID: 9A28C8860F777E439AA12E8AEA7694F801098F88@BPXM15GP.gisp.nec.co.jp)
2014-12-24 17:54:31 petere Fractions in GUC variables Patch Edited Patch Status = Rejected, Date Closed = 2014-12-24
2014-12-24 12:45:12 michael-kun Some bug fixes for REINDEX SCHEMA: unused variables defined, matviews and regression tests Patch Edited Patch Status = Committed, Date Closed = 2014-12-24
2014-12-24 12:28:53 davidrowley speedup tidbitmap patch: cache page Patch Edited Patch Status = Ready for Committer
2014-12-24 12:28:46 davidrowley speedup tidbitmap patch: cache page New Comment Review: Looks ok to me. I think v3 is the one to go for. (Message-ID: CAApHDvr8f9UnfWZpVY0OEfd_Eoxa7Br_29j+fkZQ3-Qi=fU36w@mail.gmail.com)
2014-12-24 08:28:48 michael-kun Reducing lock strength of trigger and foreign key DDL Patch Edited Patch Status = Waiting on Author
2014-12-24 08:28:43 michael-kun Reducing lock strength of trigger and foreign key DDL New Comment Review: No docs, isolation test alter-table-1 broken. Need isolation tests. (Message-ID: CAB7nPqTga_tor+6HFBUAfu5sPyOf+PH+101Wh23gjvh=tigQkg@mail.gmail.com)
2014-12-24 06:11:11 michael-kun moving from contrib to bin Patch Edited Reviewers = Michael Paquier
2014-12-24 06:10:33 michael-kun Fix installation of shared libraries on Windows (mingw) New Comment Patch: Patch for MSVC portion included as well for consistency with existing patch. Would be good to get that backpatched. (Message-ID: CAB7nPqQN-0KYo85aPGp0q8wwuuf-8KU260PEwy3ynaJN4ekRVg@mail.gmail.com)
2014-12-24 03:53:00 michael-kun moving from contrib to bin New Comment Review: Previous message is as well a review btw.. (Message-ID: CAB7nPqRKeh88Oszxw0R70NN2Mf1rm62QjcL-TeCf_5ZWuoR5YQ@mail.gmail.com)
2014-12-24 03:52:26 michael-kun moving from contrib to bin Patch Edited Patch Status = Waiting on Author
2014-12-24 03:35:13 kandreas Using 128-bit integers for sum, avg and statistics aggregates Patch Edited Patch Status = Needs Review
2014-12-24 03:35:03 kandreas Using 128-bit integers for sum, avg and statistics aggregates New Comment Patch: Fixes for intial review comments. (Message-ID: 549A2D37.6010202@proxel.se)
2014-12-23 19:53:22 pjmodos Turn recovery.conf parameters into GUCs Patch Edited Patch Status = Waiting on Author
2014-12-23 19:51:05 pjmodos Turn recovery.conf parameters into GUCs New Comment Review: Few issues/comments about code (Message-ID: 5499C432.10607@2ndquadrant.com)
2014-12-23 19:49:23 pjmodos Turn recovery.conf parameters into GUCs Patch Edited Reviewers = Andres Freund, Petr Jelinek
2014-12-23 18:39:33 alvherre Role Attribute Bitmask Representation Patch Edited Patch Status = Rejected, Date Closed = 2014-12-23
2014-12-23 13:37:00 os Using 128-bit integers for sum, avg and statistics aggregates New Comment Comment: A few comments about autoconf and int16/int128 naming (Message-ID: 20141222224747.GC17054@saarenmaa.fi)
2014-12-23 12:09:25 michael-kun moving from contrib to bin New Comment Patch: New set of patches: moved utility pages to ref/ and removed references to authors, with reworked patch for MSVC (Message-ID: CAB7nPqRKeh88Oszxw0R70NN2Mf1rm62QjcL-TeCf_5ZWuoR5YQ@mail.gmail.com)
2014-12-23 09:52:48 heikki advance local xmin more aggressively New Comment Patch: Fixed and rebased version of Heikki's patch (Message-ID: 5497F2F3.2050403@vmware.com)
2014-12-23 09:51:02 heikki compress method for spgist Patch Edited Patch Status = Waiting on Author
2014-12-23 09:50:34 heikki compress method for spgist New Comment Review: Confused on reconstructedValue's datatype (Message-ID: 54993A76.7050308@vmware.com)
2014-12-23 09:18:06 jdavis Memory-bounded HashAgg New Comment Patch: New patch; fixed segfault. (Message-ID: 1419326161.24895.13.camel@jeff-desktop)
2014-12-23 09:17:36 jdavis Memory accounting towards memory-bounded HashAgg New Comment Comment: New HashAgg patch. Memory accounting patch is unchanged. (Message-ID: 1419326161.24895.13.camel@jeff-desktop)
2014-12-23 09:16:37 jdavis Memory accounting towards memory-bounded HashAgg Patch Edited Patch Status = Needs Review
2014-12-22 20:23:47 pjmodos TABLESAMPLE clause New Comment Patch: New version addressing comments by Tomas and Jaime (Message-ID: 54987D66.9090107@2ndquadrant.com)
2014-12-22 16:00:46 heikki btree_gin and ranges New Comment Patch: Refactoring patch pushed, here's a rebased version of the original patch. (Message-ID: 54983CF2.80605@vmware.com)
2014-12-22 11:24:22 efujita Foreign table inheritance New Comment Patch: Updated 2nd patch correspondingly to a fix for EXPLAIN (Message-ID: 5497FE79.7090804@lab.ntt.co.jp)
2014-12-22 10:16:39 heikki Replace Red-Black tree with Pairing Heap in knn-GiST search Patch Edited Patch Status = Committed, Committer = Heikki Linnakangas, Date Closed = 2014-12-22
2014-12-22 05:31:28 michael-kun documentation update for doc/src/sgml/func.sgml New Comment Patch: Doc format is still incorrect, new patch. (Message-ID: CAB7nPqSJuo-umKBftNO04nwGdomWwTPM0YDPJOrj9KdQKgASMw@mail.gmail.com)
2014-12-22 05:30:52 michael-kun documentation update for doc/src/sgml/func.sgml Patch Edited Patch Status = Ready for Committer
2014-12-22 05:11:10 michael-kun Track TRUNCATE via pgstat: reset live/dead tuple counters New Comment Patch: Patch v0.3, addressing problem with 2PC (Message-ID: 87bnn3yabz.fsf@commandprompt.com)
2014-12-22 05:06:51 michael-kun Fix installation of shared libraries on Windows (mingw) Patch Edited Patch Status = Waiting on Author, Reviewers = Michael Paquier
2014-12-22 05:06:42 michael-kun Fix installation of shared libraries on Windows (mingw) New Comment Review: Should include fix for MSVC that got lost in the void. (Message-ID: CAB7nPqSJpH8mcFqTz8BNtVapFSy6zSS5PitiRgzMWjfmN9tWnQ@mail.gmail.com)
2014-12-22 03:32:18 michael-kun moving from contrib to bin New Comment Comment: Patch for the MSVC portion (Message-ID: CAB7nPqQqzUckKPxfMGG_PLksar0FFs0dQh_B4MEFGjQXD5Dvtg@mail.gmail.com)
2014-12-22 03:26:35 michael-kun Memory accounting towards memory-bounded HashAgg Patch Edited Reviewers = Peter Geoghegan, Tomas Vondra
2014-12-22 03:26:24 michael-kun Memory accounting towards memory-bounded HashAgg New Comment Review: Review from Tomas: crashes found and regression tests lacking (Message-ID: 54971D52.7070903@fuzzy.cz)
2014-12-22 03:25:57 michael-kun Memory accounting towards memory-bounded HashAgg Patch Edited Patch Status = Waiting on Author
2014-12-22 03:24:14 michael-kun multivariate statistics New Comment Review: Comments from Heikki (Message-ID: 5489CC1F.70401@vmware.com)
2014-12-22 03:23:24 michael-kun multivariate statistics Patch Edited Patch Status = Waiting on Author
2014-12-22 03:15:25 michael-kun transforms New Comment Review: Little comment from Tom. (Message-ID: 21814.1418624350@sss.pgh.pa.us)
2014-12-22 03:14:08 michael-kun Allow parallel cores to be used by vacuumdb New Comment Review: More review comments from Amit (Message-ID: CAA4eK1KYVSjxFZx6e0SfZeyFu1fFh-gmPxQV_bC6EALYEAFWAw@mail.gmail.com)
2014-12-22 03:13:40 michael-kun Allow parallel cores to be used by vacuumdb Edit Comment Comment: Moved to next CF, marked as waiting on author.
2014-12-22 03:13:05 michael-kun Allow parallel cores to be used by vacuumdb Patch Edited Patch Status = Waiting on Author
2014-12-22 03:11:18 michael-kun pg_stat_ssl view Edit Comment Review: More review comments from Heikki (Message-ID: 5491E547.4040705@vmware.com)
2014-12-22 03:10:34 michael-kun pg_stat_ssl view New Comment Review: More review comments from Heikki (Message-ID: CABUevEzE_3ch3ArxRDC1zt0rf4gdm9_JryHTtJaOy-mt7q3WZA@mail.gmail.com#CABUevEzE_3ch3ArxRDC1zt0rf4gdm9_JryHTtJaOy-mt7q3WZA@mail.gmail.com)
2014-12-22 03:10:22 michael-kun pg_stat_ssl view Patch Edited Patch Status = Waiting on Author
2014-12-22 03:09:18 michael-kun pg_rewind Patch Edited Patch Status = Waiting on Author
2014-12-22 03:08:32 michael-kun Add restore_command_retry_interval option to control timeout of restore_command nonzero status code Patch Edited Patch Status = Waiting on Author
2014-12-22 03:08:27 michael-kun Add restore_command_retry_interval option to control timeout of restore_command nonzero status code New Comment Review: Some problems found. Documentation should be completely reworked. (Message-ID: CAB7nPqRUJWh5j4BbUr2nnmjhzoPoZLhJ4TU8PrJ29SctBxO=9w@mail.gmail.com)
2014-12-22 03:07:35 michael-kun Add restore_command_retry_interval option to control timeout of restore_command nonzero status code Patch Edited Reviewers = Michael Paquier
2014-12-22 02:35:50 michael-kun UPDATE table SET(*)= Edit Comment Review: Complaint from Tom about using transformTargetList. (Message-ID: 1484.1416943619@sss.pgh.pa.us)
2014-12-22 02:34:48 michael-kun INSERT ... ON CONFLICT {UPDATE | IGNORE} Patch Edited Patch Status = Needs Review
2014-12-22 02:34:42 michael-kun INSERT ... ON CONFLICT {UPDATE | IGNORE} Delete Comment Review: Patch does not apply anymore, needs a rebase and presumably a refresh. (Message-ID: CAB7nPqTDkatemGY-ZvnhJEf41iK=HKLvuO5Zm9+k-Wrbxs7PGQ@mail.gmail.com)
2014-12-22 02:26:45 michael-kun DROP PRIVILEGES OWNED Patch Edited Patch Status = Waiting on Author
2014-12-22 02:26:40 michael-kun DROP PRIVILEGES OWNED New Comment Review: Comment from Heikki: change grammar from DROP to REVOKE as it seems to be more adapted (Message-ID: 5491B12D.7040801@vmware.com)
2014-12-22 02:25:25 michael-kun TABLESAMPLE clause New Comment Comment: Still more testing planned though
2014-12-22 02:24:43 michael-kun TABLESAMPLE clause Patch Edited Patch Status = Waiting on Author
2014-12-22 02:23:49 michael-kun UPDATE table SET(*)= New Comment Review: Complaint from Rom about using transformTargetList. (Message-ID: 1484.1416943619@sss.pgh.pa.us)
2014-12-22 02:11:06 michael-kun INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Review: Patch does not apply anymore, needs a rebase and presumably a refresh. (Message-ID: CAB7nPqTDkatemGY-ZvnhJEf41iK=HKLvuO5Zm9+k-Wrbxs7PGQ@mail.gmail.com)
2014-12-22 02:10:45 michael-kun INSERT ... ON CONFLICT {UPDATE | IGNORE} Patch Edited Patch Status = Waiting on Author
2014-12-22 02:01:01 michael-kun INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Patch: New patch addressing crash problems. (Message-ID: CAM3SWZT=HptrGyihZiyT39sPBhp+CXOTW=MhNFzXiLf-Jh4QVA@mail.gmail.com)
2014-12-22 02:00:29 michael-kun INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Review: Tests from Jeff, crash found (Message-ID: CAMkU=1zYuNU1ciBG6rRabV5r7k9iur-n7-Fdyi9hU3C98HvPGw@mail.gmail.com)
2014-12-22 01:59:21 michael-kun INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Review: More comments from Heikki (Message-ID: CAM3SWZQ7PdxFhg-B6EN80N3X0=raeyOFXxeweU2pF09hOQUb1Q@mail.gmail.com#CAM3SWZQ7PdxFhg-B6EN80N3X0=raeyOFXxeweU2pF09hOQUb1Q@mail.gmail.com)
2014-12-22 01:56:44 michael-kun advance local xmin more aggressively New Comment Review: Heikki's patch: Missing semi-colon and patch does not build with cassert (Message-ID: CAMkU=1xqJbEimn=6UOzTzpppvruRCs1avPe1v3r5vfmXEZaPsA@mail.gmail.com)
2014-12-22 01:52:15 michael-kun Async execution of postgres_fdw. New Comment Review: Review from Ashutosh (Message-ID: CAFjFpRdgY0gF72k7vPm0s1LU7J8V1W9T8X-aFpEY3WT81dSmQg@mail.gmail.com)
2014-12-22 01:51:55 michael-kun Async execution of postgres_fdw. Patch Edited Patch Status = Waiting on Author
2014-12-22 01:16:31 michael-kun btree_gin and ranges New Comment Review: Refactoring patch for a set of macros. Main patch will need a rebase once this is pushed. (Message-ID: 5491D5E4.10905@vmware.com)
2014-12-22 00:55:09 michael-kun parallel mode/contexts Edit Comment Patch: New patch, with improved APIs after IM discussion with Heikki (Message-ID: CA+Tgmobrbizn41fmCYJqXx-YDYaYTTm3YYo_+H2BRPXjtk9ORg@mail.gmail.com)
2014-12-22 00:54:58 michael-kun parallel mode/contexts New Comment Comment: New patch, with improved APIs after IM discussion with Heikki (Message-ID: CA+Tgmobrbizn41fmCYJqXx-YDYaYTTm3YYo_+H2BRPXjtk9ORg@mail.gmail.com)
2014-12-22 00:50:35 michael-kun compress method for spgist Patch Edited Patch Status = Needs Review
2014-12-22 00:41:53 michael-kun Foreign table inheritance New Comment Comment: Patch for CHECK constraints has been committed. Not looked at 2nd patch yet. (Message-ID: 30555.1418853840@sss.pgh.pa.us)
2014-12-21 23:32:07 fuzzycz Do not vacuum pgbench tables if they do not exist when pgbench -f given New Comment Review: slightly incorrect 'IF EXISTS' query, various nitpicking (Message-ID: 549757AE.3020008@fuzzy.cz)
2014-12-21 19:31:58 fuzzycz Memory-bounded HashAgg New Comment Review: segfaulting on simple example query, missing regression tests for the batchnig (Message-ID: 54971D52.7070903@fuzzy.cz)
2014-12-21 19:22:41 fuzzycz TABLESAMPLE clause New Comment Review: missing CATVERSION bump, naming of pg_tablesamplemethod, tests are only for REPEATABLE cases, a few minor issues (Message-ID: 549705AA.7000301@fuzzy.cz)
2014-12-21 15:40:09 fuzzycz decreasing array_agg memory consumption New Comment Patch: v6 of the patch, fixing issues pointed out by Alvaro Herrera - missing explanation of subcontext in comments, commented-out assert (Message-ID: 5496CD50.3050602@fuzzy.cz)
2014-12-21 15:07:25 ishii Do not vacuum pgbench tables if they do not exist when pgbench -f given New Comment Patch: V2 patch. Check pgbench tables before vacuum. If they do not exist, silently skips vacuum. (Message-ID: 20141221.235832.697959528765396653.t-ishii@sraoss.co.jp)
2014-12-21 15:03:48 ishii Do not vacuum pgbench tables if they do not exist when pgbench -f given New Patch Name = Do not vacuum pgbench tables if they do not exist when pgbench -f given, Topic = Clients, Patch Status = Needs Review, Author = Tatsuo Ishii, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-21 15:03:48 ishii Do not vacuum pgbench tables if they do not exist when pgbench -f given New Comment Patch: Initial version. (Message-ID: 20141213.191654.1409898280330806597.t-ishii@sraoss.co.jp)
2014-12-21 04:43:35 amitkapila pg_basebackup vs. Windows and tablespaces (Extend base backup to include symlink file used to restore symlinks) Patch Edited Patch Status = Needs Review
2014-12-21 04:43:24 amitkapila pg_basebackup vs. Windows and tablespaces (Extend base backup to include symlink file used to restore symlinks) New Comment Patch: Fixed all the review comments raised for patch (Message-ID: CAA4eK1Kcx-YfKXHP4x4O9tNZeDaV7iHgdNhgMY+8TCbrne87CQ@mail.gmail.com)
2014-12-21 01:04:46 davidrowley speedup tidbitmap patch: cache page Patch Edited Patch Status = Waiting on Author
2014-12-21 01:04:36 davidrowley speedup tidbitmap patch: cache page New Comment Review: Small suggestion and benchmark results, plus patch which improves the comments a little. We need to decide which version to use. (Message-ID: CAApHDvp9u9KDhWUF-sP-H7FQG6Ei=yaJnoLF8dBromy6CogNTg@mail.gmail.com)
2014-12-20 23:19:47 pgeoghegan Using Levenshtein distance to HINT a candidate column name New Comment Patch: Revision that adds cost of distance of alias to would-be correct alias iff user specified an alias in faulty ad-hoc query (i.e. Tom and Stephen's preferred alias handling). (Message-ID: CAM3SWZTqK-kS-eb_y+rkSjto8gOyfH-R08WE3bt+EkJmU1otqA@mail.gmail.com)
2014-12-20 23:15:43 abrightwell Role Attribute Bitmask Representation Edit Comment Patch: Updated patch. role-attribute-bitmask-v5.patch - includes documentation updates. (Message-ID: CAKRt6CRFeYhxc65H1uU-ebJ4H=OUYJtQ40zZttrBsigBPby3Ew@mail.gmail.com)
2014-12-20 23:15:32 abrightwell Role Attribute Bitmask Representation Edit Comment Patch: Updated patch. role-attribute-bitmask-v4.patch - does not include documentation updates. (Message-ID: CAKRt6CT7QA2e5xdQHtQk3NGYANmZp=5ahPFuEm2gFojkB233BA@mail.gmail.com)
2014-12-20 23:15:03 abrightwell Role Attribute Bitmask Representation New Comment Patch: Updated patch. role-attribute-bitmask-v7.patch - includes documentation updates and proposed changes from Alvaro Herrera. (Message-ID: CAKRt6CSxEo2Wej3NfB3QjWKuoFrnQfvLZ_DGitNFJrOSfaUFsA@mail.gmail.com)
2014-12-20 20:51:22 pgeoghegan Replace Red-Black tree with Pairing Heap in knn-GiST search Patch Edited Patch Status = Waiting on Author
2014-12-20 20:51:17 pgeoghegan Replace Red-Black tree with Pairing Heap in knn-GiST search New Comment Review: Minor observations on style, necessity of remove function. (Message-ID: CAM3SWZQOBog8FiWA5WOYyATzm5y0ac8bj077F0vGqg__1HOMYQ@mail.gmail.com)
2014-12-20 19:31:47 fuzzycz decreasing array_agg memory consumption New Comment Patch: v5 of the patch - making the API changes less intrusive, fixing a few bugs, adding asserts etc. (Message-ID: 5495CE1B.9060906@fuzzy.cz)
2014-12-20 17:13:46 ssinger If pg_hba.conf has changed since last reload, emit a HINT to the client and server log Patch Edited Patch Status = Ready for Committer
2014-12-20 17:13:23 ssinger If pg_hba.conf has changed since last reload, emit a HINT to the client and server log New Comment Review: The updated patch addresses the issues mentioned above. (Message-ID: BLU437-SMTP30C57A4AE8100BFB710EC9DC6B0@phx.gbl)
2014-12-20 08:28:09 apaan decreasing array_agg memory consumption New Comment Comment: performance testing, implemented subcontext check in initArrayResultArr, comment about release parameter (Message-ID: CACQjQLrsbbN=MQxOAAnS1k10gkK3H-EH3ERHELkWmqp-dh2dNA@mail.gmail.com)
2014-12-20 08:27:06 apaan decreasing array_agg memory consumption Patch Edited Patch Status = Waiting on Author, Reviewers = Ali Akbar
2014-12-19 04:54:16 amitkapila Parallel Seq scan New Comment Patch: qual push down to worker backends. (Message-ID: CAA4eK1KHWha5_NqxFZFBZ=ZFkkBSwf+2Z6htJFV+YVY_LW9cQA@mail.gmail.com)
2014-12-19 01:58:44 alvherre Role Attribute Bitmask Representation Patch Edited Reviewers = Álvaro Herrera, Committer = Álvaro Herrera
2014-12-19 00:42:46 kaigai Join pushdown support for foreign tables Patch Edited Patch Status = Waiting on Author
2014-12-19 00:42:39 kaigai Join pushdown support for foreign tables New Comment Comment: suggestion to use fdw_ps_tlist to map underlying var-node on pseudo target-list (Message-ID: 9A28C8860F777E439AA12E8AEA7694F801091BEE@BPXM15GP.gisp.nec.co.jp)
2014-12-19 00:41:23 kaigai Join pushdown support for foreign tables New Comment Comment: some brief comments (Message-ID: 9A28C8860F777E439AA12E8AEA7694F80109199D@BPXM15GP.gisp.nec.co.jp)
2014-12-18 23:55:32 michael-kun Compression of Full Page Writes Patch Edited Patch Status = Needs Review
2014-12-18 23:55:24 michael-kun Compression of Full Page Writes New Comment Patch: Previous comments addressed. (Message-ID: CAB7nPqSwYt-y2phLKHqhUrVNE=eewh0uYnxU1XehU6WtfetfSA@mail.gmail.com)
2014-12-18 20:22:05 alvherre Log inabality to acquire cleanup lock in vacuum Patch Edited Patch Status = Committed, Reviewers = Heikki, Robert, Andres, Committer = Álvaro Herrera, Date Closed = 2014-12-18
2014-12-18 18:49:13 davidrowley Using 128-bit integers for sum, avg and statistics aggregates Patch Edited Patch Status = Waiting on Author
2014-12-18 18:38:03 tgl speedup tidbitmap patch: hash BlockNumber New Comment Patch: Revised patch here. (Message-ID: 32316.1418869234@sss.pgh.pa.us)
2014-12-18 18:37:25 tgl speedup tidbitmap patch: hash BlockNumber Patch Edited Patch Status = Committed, Committer = Tom Lane, Date Closed = 2014-12-18
2014-12-18 09:46:07 masaofujii Compression of Full Page Writes Patch Edited Patch Status = Waiting on Author
2014-12-18 09:46:00 masaofujii Compression of Full Page Writes New Comment Review: Some comments (Message-ID: CAHGQGwEwz25jJBOYVssJ0kWZbUMRtuDY2v2qd5O1Cboz5BZsOg@mail.gmail.com)
2014-12-18 05:45:14 michael-kun Reducing lock strength of trigger and foreign key DDL Patch Edited Reviewers = Michael Paquier
2014-12-18 02:12:23 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} Patch Edited Topic = SQL Commands
2014-12-18 02:11:24 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Review: Questions from Heikki (Message-ID: 5491F1B2.9080307@vmware.com)
2014-12-17 19:56:48 heikki Enable detection of c++ files in MSVC scripts Patch Edited Patch Status = Committed, Committer = Heikki Linnakangas, Date Closed = 2014-12-17
2014-12-17 18:51:08 tgl Foreign table inheritance Patch Edited Committer = Tom Lane
2014-12-17 18:45:02 tgl speedup tidbitmap patch: hash BlockNumber Patch Edited Patch Status = Waiting on Author
2014-12-17 18:44:39 tgl speedup tidbitmap patch: hash BlockNumber New Comment Review: Still needs work, also maybe we need more thought about how to change hash_create exactly. (Message-ID: 3817.1418837659@sss.pgh.pa.us)
2014-12-17 15:59:51 sigaev speedup tidbitmap patch: cache page New Comment Patch: Fix bugs introduced in v2.1 (Message-ID: 5491A7C0.20708@sigaev.ru)
2014-12-17 15:58:58 sigaev speedup tidbitmap patch: hash BlockNumber New Comment Patch: Remove wrong comment (Message-ID: 54917A27.5040409@sigaev.ru)
2014-12-17 15:40:05 heikki Replace Red-Black tree with Pairing Heap in knn-GiST search New Comment Patch: Latest patch version (Message-ID: 54918E26.10201@vmware.com)
2014-12-17 15:35:58 heikki explain_sortorder-patch Patch Edited Patch Status = Waiting on Author
2014-12-17 15:35:53 heikki explain_sortorder-patch New Comment Review: I don't like this output (Message-ID: 5491A299.5060904@vmware.com)
2014-12-17 14:29:24 amitkapila pg_basebackup vs. Windows and tablespaces (Extend base backup to include symlink file used to restore symlinks) New Comment Patch: Addressed the review comments by Tom Lane and Robert. Still one issue is pending which is whether to allow newline in linkpath of tablespace, discussion for same is going on. (Message-ID: CAA4eK1LykWQCiWvdpGg2iZJ4dZEeB3sbKFFvdLN3-bAJjL4bxg@mail.gmail.com)
2014-12-17 08:43:52 simon Turning off HOT for larger SQL queries New Comment Patch: v8 (Message-ID: CA+U5nM+c7w4HJzoU1SGmaLB2J7dcG8z9B9tAehFCv-DKppA+Pg@mail.gmail.com)
2014-12-17 08:18:23 ashutosh_bapat Async execution of postgres_fdw. Patch Edited Reviewers = Ashutosh Bapat
2014-12-16 23:53:04 michael-kun speedup tidbitmap patch: cache page Patch Edited Patch Status = Needs Review
2014-12-16 23:50:06 michael-kun Compression of Full Page Writes Edit Comment Patch: New patch not compressing hole. Record length is same as HEAD when switch is off for minimal CPU usage. (Message-ID: CAB7nPqR651FJHGOW4iiZy9-pPj_5MqqmmuC63MHYXRAGz11MhQ@mail.gmail.com)
2014-12-16 17:51:34 sigaev compress method for spgist Edit Comment Patch: Third version, add docs (Message-ID: 54907069.1030506@sigaev.ru)
2014-12-16 17:51:15 sigaev compress method for spgist New Comment Patch: Third version (Message-ID: 54907069.1030506@sigaev.ru)
2014-12-16 17:11:52 sigaev speedup tidbitmap patch: hash BlockNumber New Comment Patch: rework patch accordingly Tom's suggestion (Message-ID: 549066DA.6090800@sigaev.ru)
2014-12-16 16:33:21 sigaev speedup tidbitmap patch: cache page New Comment Patch: Add comment to patch, v2.1 caches lossy pages too. (Message-ID: 54905CDE.5020500@sigaev.ru)
2014-12-16 14:40:53 michael-kun Compression of Full Page Writes New Comment Patch: New patch filling hole with zeros, compressing them. Record length is same as HEAD when switch is off. (Message-ID: CAB7nPqRF-Tdr_LWHaOfc1MdMUpmU+1cLH6vGPKC1PDseSO8aZA@mail.gmail.com)
2014-12-16 14:39:53 michael-kun Compression of Full Page Writes New Comment Review: Concerns that 8 additional bytes in record for block header is not good at all... (Message-ID: CA+Tgmobvq_J1KQ5qbf9mYNO_yDw2FsSxNGzcTDDhgoGEuE8A_w@mail.gmail.com)
2014-12-16 10:25:23 davidrowley logical column ordering (WIP= Patch Edited Name = logical column ordering (WIP)
2014-12-16 10:23:06 mtimm_01 explain_sortorder-patch Edit Comment Patch: Spaces replaced with tabs. "Make test" runs successfully. (Message-ID: 47F25AA0-77BA-4B85-B675-C8C9E5168CF3@exchange.wwu.de)
2014-12-16 10:22:34 mtimm_01 explain_sortorder-patch Edit Comment Patch: Spaces replaced with tabs. "Make test" runs successfully. (Message-ID: F4FF595C-D39D-4036-A446-57C91ABE6B31@exchange.wwu.de)
2014-12-16 10:13:24 mtimm_01 explain_sortorder-patch Edit Comment Patch: Spaces replaced with tabs. "Make test" runs successfully. (Message-ID: 47F25AA0-77BA-4B85-B675-C8C9E5168CF3@exchange.wwu.de)
2014-12-16 10:11:43 davidrowley Using 128-bit integers for sum, avg and statistics aggregates New Comment Review: A couple of questions about the code (Message-ID: CAApHDvqtQxah3SAs6OeajYXYyMMkzDO5h6z6yDUM7=fekEw7aQ@mail.gmail.com)
2014-12-16 10:10:10 davidrowley Using 128-bit integers for sum, avg and statistics aggregates Patch Edited Reviewers = Peter Geoghegan, David Rowley
2014-12-16 10:05:01 mtimm_01 explain_sortorder-patch Edit Comment Patch: Spaces replaced with tabs. "Make test" runs successfully. (Message-ID: 47F25AA0-77BA-4B85-B675-C8C9E5168CF3@exchange.wwu.de)
2014-12-16 10:01:29 mtimm_01 explain_sortorder-patch Edit Comment Patch: Spaces replaced with tabs. "Make test" runs with success. (Message-ID: 47F25AA0-77BA-4B85-B675-C8C9E5168CF3@exchange.wwu.de)
2014-12-16 10:01:22 mtimm_01 explain_sortorder-patch New Comment Comment: Spaces replaced with tabs. "Make test" runs with success. (Message-ID: 47F25AA0-77BA-4B85-B675-C8C9E5168CF3@exchange.wwu.de)
2014-12-16 10:00:01 mtimm_01 explain_sortorder-patch Delete Comment Patch: Hi Mike, Now I've replaced the spaces at the beginning of the lines with tabs. Quotes(") in the expected/explain_sortorder.out-File caused failing „make check“. So I changed them to single quotes('). I’ve added the corrected patch as attachment. Kind regards, Marius --- Marius Timmer Zentrum für Informationsverarbeitung Westfälische Wilhelms-Universität Münster Einsteinstraße 60 (Message-ID: 47F25AA0-77BA-4B85-B675-C8C9E5168CF3@exchange.wwu.de)
2014-12-16 09:59:50 mtimm_01 explain_sortorder-patch New Comment Patch: Hi Mike, Now I've replaced the spaces at the beginning of the lines with tabs. Quotes(") in the expected/explain_sortorder.out-File caused failing „make check“. So I changed them to single quotes('). I’ve added the corrected patch as attachment. Kind regards, Marius --- Marius Timmer Zentrum für Informationsverarbeitung Westfälische Wilhelms-Universität Münster Einsteinstraße 60 (Message-ID: 47F25AA0-77BA-4B85-B675-C8C9E5168CF3@exchange.wwu.de)
2014-12-16 09:31:34 snaga GetUserId() to has_privs_of_role() cleanup. Patch Edited Reviewers = Satoshi Nagayasu
2014-12-16 09:17:18 simon pgaudit extension Patch Edited Patch Status = Waiting on Author
2014-12-16 07:59:42 simon pgaudit extension Patch Edited Moved From CommitFest = 2014-10, Topic = Security, Patch Status = Needs Review, Date Closed = NULL
2014-12-16 07:20:48 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} Edit Comment Patch: V1.7 - Revision with small tweaks, mostly polishing of approach #2 to Value locking (Message-ID: CAM3SWZQTqsCLZ1YJ1OuWFpO-GmFHwtgwTOg+o_NNzxrPa7Cx4A@mail.gmail.com)
2014-12-16 07:15:17 pgeoghegan INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Patch: Revision with small tweaks, mostly polishing of approach #2 to Value locking (Message-ID: CAM3SWZQTqsCLZ1YJ1OuWFpO-GmFHwtgwTOg+o_NNzxrPa7Cx4A@mail.gmail.com)
2014-12-16 05:53:48 apaan decreasing array_agg memory consumption New Comment Comment: no subcontext creation not implemented in initArrayResultArr (Message-ID: CACQjQLpXxTE14YT--KsN3Bov_j2weT3Gu-rp3+rRt6a22tT4Mg@mail.gmail.com)
2014-12-16 02:53:21 michael-kun pg_rewind Edit Comment Review: Various comments, documentation is missing and MSVC scripts are not updated yet. (Message-ID: CAB7nPqQcA8fDDCixu9YHKzr3PnQQj3wG6Xfrm4uyUF3zQYEBnQ@mail.gmail.com)
2014-12-16 02:52:54 michael-kun pg_rewind New Comment Review: Various comments, documentation is missing as well. (Message-ID: CAB7nPqQcA8fDDCixu9YHKzr3PnQQj3wG6Xfrm4uyUF3zQYEBnQ@mail.gmail.com)
2014-12-16 02:52:11 michael-kun pg_rewind Patch Edited
2014-12-16 00:50:00 decibel Track TRUNCATE via pgstat: reset live/dead tuple counters Patch Edited Reviewers = Jim Nasby
2014-12-16 00:49:41 decibel Track TRUNCATE via pgstat: reset live/dead tuple counters New Comment Review: Review + test patch (Message-ID: <548F7D38.2000401@BlueTreble.com>)
2014-12-15 23:35:40 fuzzycz decreasing array_agg memory consumption New Comment Patch: v3, fixing issues with libxml / plperl (Message-ID: 548F6E60.3060506@fuzzy.cz)
2014-12-15 22:58:03 decibel Track TRUNCATE via pgstat: reset live/dead tuple counters New Comment Comment: Not sure how patch was created, but git apply and am couldn't handle it. Ended up using patch -p1 --dry-run <~/Downloads/truncate-and-pgstat-v0.2.patch
2014-12-15 22:38:10 jjanes Replace Red-Black tree with Pairing Heap in knn-GiST search New Comment Comment: undefined function pairingheap_empty when under --enable-cassert (Message-ID: CAMkU=1xTWjb9bfBOHrmJ7YOVwT4kXEEnX=d8Qa81kPK98WUnaQ@mail.gmail.com)
2014-12-15 22:25:09 jjanes Turning off HOT for larger SQL queries New Comment Comment: contrib/pgstattuple needs to be updated. (Message-ID: CAMkU=1wCxXGh+ha3vgRSYdo76B3K9KC3tHcKJPPJX0HydKcdjQ@mail.gmail.com)
2014-12-15 22:14:35 jjanes INSERT ... ON CONFLICT {UPDATE | IGNORE} New Comment Comment: oid conflict on OID 3261 in patch 0002-Support-INSERT-.-ON-CONFLICT-UPDATE-IGNORE.patch
2014-12-15 22:13:55 pgeoghegan Using 128-bit integers for sum, avg and statistics aggregates Patch Edited Reviewers = Peter Geoghegan
2014-12-15 22:12:39 pgeoghegan Replace Red-Black tree with Pairing Heap in knn-GiST search Patch Edited Reviewers = Peter Geoghegan
2014-12-15 21:49:41 jjanes decreasing array_agg memory consumption New Comment Comment: problems under with-libxml and with-perl (Message-ID: CAMkU=1ztioQhMa8YA8g9WVfD8hAVLqLyXxho65k1D3H1BDFr+g@mail.gmail.com)
2014-12-15 21:09:49 jjanes Memory-bounded HashAgg New Comment Comment: Depends on https://commitfest.postgresql.org/action/patch_view?id=1621
2014-12-15 20:59:03 johto DROP PRIVILEGES OWNED New Patch Name = DROP PRIVILEGES OWNED, Topic = SQL Commands, Patch Status = Needs Review, Author = Marko Tiikkaja, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-15 20:59:03 johto DROP PRIVILEGES OWNED New Comment Patch: Initial version. (Message-ID: 548E2EBC.6040401@joh.to)
2014-12-15 18:58:10 simon Logical Decoding with timelines New Comment Patch: Initial version. (Message-ID: CA+U5nMKHqQbNNOAMFJ6pmqkDJ5A6xCowsjG8eA468EAzs7yHUQ@mail.gmail.com)
2014-12-15 18:58:10 simon Logical Decoding with timelines New Patch Name = Logical Decoding with timelines, Topic = Replication & Recovery, Patch Status = Needs Review, Author = Simon Riggs, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-15 18:57:04 simon WALWriter during Recovery New Comment Patch: Initial version. (Message-ID: CA+U5nMJifauXvVbx=v3UbYbHO3Jw2rdT4haL6CCooEDM5=4ASQ@mail.gmail.com)
2014-12-15 18:57:04 simon WALWriter during Recovery New Patch Name = WALWriter during Recovery, Topic = Replication & Recovery, Patch Status = Needs Review, Author = Simon Riggs, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-15 18:52:06 muhammad.asif.naeem Perl coding error in msvc build system Patch Edited Reviewers = Muhammad Asif Naeem
2014-12-15 18:46:50 muhammad.asif.naeem Enable detection of c++ files in MSVC scripts Patch Edited Reviewers = Muhammad Asif Naeem
2014-12-15 16:52:15 maiku41 explain_sortorder-patch New Comment Review: Patch applies. Make test fails with missing collation clause. Minor formatting (space/tab) issues. (Message-ID: CANPAkgsKtPxLGF_Xx_p20B-5gb98BvCYqy9FrjzLD6RTbdPD8g@mail.gmail.com)
2014-12-15 16:44:10 abrightwell Role Attribute Bitmask Representation New Comment Patch: Updated patch. role_attribute_bitmask-v5.patch - includes documentation updates. (Message-ID: CAKRt6CRFeYhxc65H1uU-ebJ4H=OUYJtQ40zZttrBsigBPby3Ew@mail.gmail.com)
2014-12-15 16:40:25 ash If pg_hba.conf has changed since last reload, emit a HINT to the client and server log New Comment Patch: v2: remove the client-side message for improved security and to avoid confusion. (Message-ID: 87ppbkyikn.fsf@commandprompt.com)
2014-12-15 16:39:19 ash If pg_hba.conf has changed since last reload, emit a HINT to the client and server log Patch Edited Moved From CommitFest = 2014-10, Topic = System Administration, Patch Status = Needs Review, Date Closed = NULL
2014-12-15 16:33:35 maiku41 explain_sortorder-patch Patch Edited Reviewers = Mike Blackwell
2014-12-15 16:18:09 rhaas advance local xmin more aggressively Edit Comment Patch: Initial version from Robert. (Message-ID: CA+Tgmob4b0Ohway3qNiOKWv95WAGDwMFHQi9ZLfWvC-83ZvdDg@mail.gmail.com)
2014-12-15 16:18:02 rhaas advance local xmin more aggressively New Comment Patch: Competing version from Heikki. (Message-ID: 5488ACF0.8050901@vmware.com)
2014-12-15 16:17:28 rhaas advance local xmin more aggressively New Patch Name = advance local xmin more aggressively, Topic = Performance, Patch Status = Needs Review, Author = Robert Haas vs. Heikki Linnakangas, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-15 16:17:28 rhaas advance local xmin more aggressively New Comment Patch: Initial version. (Message-ID: CA+Tgmob4b0Ohway3qNiOKWv95WAGDwMFHQi9ZLfWvC-83ZvdDg@mail.gmail.com)
2014-12-15 16:16:31 rhaas parallel mode/contexts New Patch Name = parallel mode/contexts, Topic = Server Features, Patch Status = Needs Review, Author = Robert Haas & others, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-15 16:16:31 rhaas parallel mode/contexts New Comment Patch: Initial version. (Message-ID: CA+Tgmob8u=J-D-_5SCXOQ9-ZtK_xCHjwa3M29CxBhU3VPPnezw@mail.gmail.com)
2014-12-15 15:20:14 petere Fractions in GUC variables New Comment Review: Not sure we want this (anymore). (Message-ID: 548EFBF7.3070409@gmx.net)
2014-12-15 15:19:58 petere Fractions in GUC variables Patch Edited Patch Status = Waiting on Author, Reviewers = Peter Eisentraut
2014-12-15 15:17:28 heikki Point to polygon distance operator Patch Edited Patch Status = Committed, Committer = Heikki Linnakangas, Date Closed = 2014-12-15
2014-12-15 14:19:28 ash Add ssl_protocols configuration option Patch Edited Moved From CommitFest = 2014-10, Topic = Server Features, Patch Status = Needs Review, Date Closed = NULL
2014-12-15 14:17:25 ash Turn recovery.conf parameters into GUCs New Comment Patch: v5.5 (Message-ID: 87d27ozxth.fsf@commandprompt.com)
2014-12-15 13:58:17 alvherre logical column ordering (WIP= New Comment Patch: Initial version. (Message-ID: 20141209174146.GP1768@alvh.no-ip.org)
2014-12-15 13:58:17 alvherre logical column ordering (WIP= New Patch Name = logical column ordering (WIP=, Topic = Server Features, Patch Status = Needs Review, Author = Álvaro Herrera, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-15 13:40:03 heikki speedup tidbitmap patch: hash BlockNumber Patch Edited Reviewers = Heikki Linnakangas
2014-12-15 13:39:59 heikki speedup tidbitmap patch: hash BlockNumber Patch Edited Patch Status = Ready for Committer
2014-12-15 13:39:52 heikki speedup tidbitmap patch: hash BlockNumber New Comment Review: Some minor suggestions. Looks good to me. (Message-ID: 548EE3F0.8040504@vmware.com)
2014-12-15 13:22:29 heikki compress method for spgist Patch Edited Reviewers = Heikki Linnakangas
2014-12-15 13:22:23 heikki compress method for spgist Patch Edited Patch Status = Waiting on Author
2014-12-15 13:22:04 heikki compress method for spgist New Comment Review: Review. Needs documentation. (Message-ID: 5481B1E4.60606@vmware.com)
2014-12-15 13:21:24 heikki compress method for spgist Edit Comment Patch: Second version (Message-ID: 547C62AF.2050207@sigaev.ru)
2014-12-15 13:13:34 heikki Replace Red-Black tree with Pairing Heap in knn-GiST search New Patch Name = Replace Red-Black tree with Pairing Heap in knn-GiST search, Topic = Performance, Patch Status = Needs Review, Author = Heikki Linnakangas, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-15 13:13:34 heikki Replace Red-Black tree with Pairing Heap in knn-GiST search New Comment Patch: Initial version. (Message-ID: 548EDD4C.3030600@vmware.com)
2014-12-15 12:40:11 kaigai Join pushdown support for foreign tables Patch Edited Reviewers = KaiGai Kohei
2014-12-15 10:51:33 dilip.kumar Allow parallel cores to be used by vacuumdb Patch Edited Moved From CommitFest = 2014-10, Topic = Clients, Patch Status = Needs Review, Date Closed = NULL
2014-12-15 10:46:15 atris UPDATE table SET(*)= Patch Edited Moved From CommitFest = 2014-10, Topic = SQL Commands, Patch Status = Waiting on Author, Date Closed = NULL
2014-12-15 10:38:01 pjmodos Sequence Access Method New Comment Patch: better ALTER SEQUENCE USING implementation (Message-ID: 548EB9C5.5090905@2ndquadrant.com)
2014-12-15 09:12:02 horiguti Async execution of postgres_fdw. New Patch Name = Async execution of postgres_fdw., Topic = Performance, Patch Status = Needs Review, Author = Kyotaro Horiguchi, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-15 09:12:02 horiguti Async execution of postgres_fdw. New Comment Patch: Initial version. (Message-ID: 20141215.180944.242184148.horiguchi.kyotaro@lab.ntt.co.jp)
2014-12-15 09:11:20 horiguti Escaping from blocked send() by pg_terminate_backend(). Patch Edited Moved From CommitFest = 2014-10, Topic = Miscellaneous
2014-12-15 08:41:21 hanada Join pushdown support for foreign tables New Comment Patch: Initial version. (Message-ID: CAEZqfEfnXDMSh2PuQFbGNJh+DxbSkLqLRGaNGh_pNTBVtaX1cQ@mail.gmail.com)
2014-12-15 08:41:21 hanada Join pushdown support for foreign tables New Patch Name = Join pushdown support for foreign tables, Topic = Server Features, Patch Status = Needs Review, Author = Shigeru HANADA, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-15 08:39:12 davidrowley speedup tidbitmap patch: cache page Patch Edited Patch Status = Waiting on Author
2014-12-15 08:38:28 davidrowley speedup tidbitmap patch: cache page New Comment Review: A few comments (Message-ID: CAApHDvp_+c1hPRiVfKcT1ty__6q5wnz2cMc_tNyVx6mhbbzSAg@mail.gmail.com)
2014-12-15 08:03:27 kaigai ctidscan as an example of custom-scan New Patch Name = ctidscan as an example of custom-scan, Topic = Server Features, Patch Status = Needs Review, Author = KaiGai Kohei, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-15 08:03:27 kaigai ctidscan as an example of custom-scan New Comment Patch: Initial version. (Message-ID: <9A28C8860F777E439AA12E8AEA7694F801091310@BPXM15GP.gisp.nec.co.jp)
2014-12-15 07:01:37 nmisch Foreign table inheritance Patch Edited Committer = Nobody
2014-12-15 06:12:27 petere transforms New Comment Comment: see also previous entry: https://commitfest.postgresql.org/action/patch_view?id=1067
2014-12-15 06:12:03 petere transforms New Comment Patch: Initial version. (Message-ID: 548E7B5C.8010000@gmx.net)
2014-12-15 06:12:03 petere transforms New Patch Name = transforms, Topic = Procedural Languages, Patch Status = Needs Review, Author = Peter Eisentraut, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-15 05:59:04 pjmodos Sample Logical Decoding Plugin Patch Edited Name = Logical Replication Helper Functions
2014-12-15 05:58:31 pjmodos Sample Logical Decoding Plugin New Comment Patch: Initial version. (Message-ID: 548E785C.2080904@2ndquadrant.com)
2014-12-15 05:58:31 pjmodos Sample Logical Decoding Plugin New Patch Name = Sample Logical Decoding Plugin, Topic = Replication & Recovery, Patch Status = Needs Review, Author = Petr Jelinek, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-15 05:36:13 michael-kun Some bug fixes for REINDEX SCHEMA: unused variables defined, matviews and regression tests Edit Comment Review: Patch works as expected. Those are only things bugs missing in former implementation. (Message-ID: CAFcNs+o+DZ9znhdmz=kSRXBL3=mZiuvYjcVmT+9cerJdTfLcMg@mail.gmail.com)
2014-12-15 05:35:38 michael-kun Some bug fixes for REINDEX SCHEMA: unused variables defined, matviews and regression tests New Comment Comment: Patch to fix regressions and matviews pushed, still missing the removal of do_user and do_database in ReindexStmt. (Message-ID: CAFcNs+o+DZ9znhdmz=kSRXBL3=mZiuvYjcVmT+9cerJdTfLcMg@mail.gmail.com)
2014-12-15 04:12:37 apaan Fix xpath() to return namespace definitions (fixes the issue with nested or repeated xpath()) New Comment Comment: the v7 patch is good as it is. Will try to reduce performance regression in another patch. (Message-ID: CACQjQLoTXG8C0-VFThsTP9pN76twzaGwC-QiBkn-WRnLoxEAzQ@mail.gmail.com)
2014-12-15 04:10:05 apaan Fix xpath() to return namespace definitions (fixes the issue with nested or repeated xpath()) Patch Edited Moved From CommitFest = 2014-10, Topic = Bug Fixes, Patch Status = Needs Review, Date Closed = NULL
2014-12-15 04:07:01 amitkapila pg_basebackup vs. Windows and tablespaces (Extend base backup to include symlink file used to restore symlinks) Patch Edited Moved From CommitFest = 2014-10, Topic = System Administration, Patch Status = Waiting on Author, Date Closed = NULL
2014-12-15 03:49:24 michael-kun Row-level security Patch Edited Moved From CommitFest = 2014-10, Topic = Security
2014-12-15 03:40:31 snaga pg_rewind Patch Edited Reviewers = Satoshi Nagayasu
2014-12-15 03:26:14 michael-kun alter user/role CURRENT_USER Patch Edited Moved From CommitFest = 2014-10, Topic = SQL Commands
2014-12-15 03:18:21 rhodiumtoad Grouping Sets New Comment Comment: Moved to new CF and set back to "Waiting on Author"
2014-12-15 03:17:35 rhodiumtoad Grouping Sets Patch Edited Moved From CommitFest = 2014-10, Topic = SQL Commands, Patch Status = Waiting on Author, Date Closed = NULL
2014-12-15 02:56:15 michael-kun multivariate statistics Patch Edited Moved From CommitFest = 2014-10, Topic = Miscellaneous
2014-12-15 02:45:08 petere moving from contrib to bin New Comment Patch: Initial version. (Message-ID: 548E4094.4000008@gmx.net)
2014-12-15 02:45:08 petere moving from contrib to bin New Patch Name = moving from contrib to bin, Topic = Miscellaneous, Patch Status = Needs Review, Author = Peter Eisentraut, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-15 02:41:32 michael-kun event triggers: more DROP info Patch Edited Reviewers = Nobody
2014-12-15 02:41:25 michael-kun event triggers: more DROP info Patch Edited Moved From CommitFest = 2014-10, Topic = Replication & Recovery
2014-12-15 02:27:24 michael-kun Memory accounting towards memory-bounded HashAgg Patch Edited Moved From CommitFest = 2014-10, Topic = Miscellaneous
2014-12-15 02:25:07 michael-kun group locking Patch Edited Moved From CommitFest = 2014-10, Topic = Performance
2014-12-15 02:23:39 michael-kun Abbreviated keys (Was: Sort support for text with strxfrm() poor man's keys) Patch Edited Moved From CommitFest = 2014-10, Topic = Server Features
2014-12-15 02:20:52 michael-kun INSERT ... ON CONFLICT {UPDATE | IGNORE} Patch Edited Moved From CommitFest = 2014-10, Topic = Server Features
2014-12-15 01:51:01 michael-kun Point to polygon distance operator Patch Edited Moved From CommitFest = 2014-10, Topic = Functions
2014-12-15 01:36:49 michael-kun Foreign table inheritance Patch Edited Moved From CommitFest = 2014-10, Topic = Server Features
2014-12-15 01:25:00 michael-kun Using Levenshtein distance to HINT a candidate column name Patch Edited Moved From CommitFest = 2014-10, Topic = Server Features
2014-12-14 20:10:57 hasegeli BRIN inclusion operator class New Patch Name = BRIN inclusion operator class, Topic = Performance, Patch Status = Needs Review, Author = Emre Hasegeli, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-14 20:10:57 hasegeli BRIN inclusion operator class New Comment Patch: Initial version. (Message-ID: CAE2gYzyuhDFZdfiZQU1E-b6wRV=-bSS2C5NdEqcDQYL4X0unOA@mail.gmail.com)
2014-12-14 11:58:33 davidrowley speedup tidbitmap patch: cache page Patch Edited Reviewers = David Rowley
2014-12-14 11:40:52 michael-kun Compression of Full Page Writes Patch Edited Author = Rahila Syed, Michael Paquier
2014-12-14 11:40:45 michael-kun Compression of Full Page Writes Patch Edited Moved From CommitFest = 2014-10, Topic = Server Features
2014-12-13 20:50:04 kandreas Reducing lock strength of trigger and foreign key DDL New Comment Patch: Initial version. (Message-ID: 548CA582.5010801@proxel.se)
2014-12-13 20:50:04 kandreas Reducing lock strength of trigger and foreign key DDL New Patch Name = Reducing lock strength of trigger and foreign key DDL, Topic = System Administration, Patch Status = Needs Review, Author = Andreas Karlsson, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-12 15:03:26 heikki pg_rewind New Patch Name = pg_rewind, Topic = System Administration, Patch Status = Needs Review, Author = Heikki Linnakangas, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-12 15:03:26 heikki pg_rewind New Comment Patch: Initial version. (Message-ID: 548AF7F9.3090200@vmware.com)
2014-12-12 03:36:31 simon Avoiding plan disasters with LIMIT Edit Comment Patch: 2 patches: enable_sortedpath.v1.patch, avoid_limit_pushdown.v4.patch (Message-ID: CA+U5nMJXYFVr_OUyU45W-q6BX=0H6K9DsSXFA4QZcoBzTO0WKA@mail.gmail.com)
2014-12-12 03:35:29 simon Turning off HOT for larger SQL queries Edit Comment Patch: v7 (Message-ID: CA+U5nM+T3h6Nn0xt5zUYi=uXhjHs4G1qvrTx36t0TVv2UVs94w@mail.gmail.com)
2014-12-12 03:34:56 simon Turning off HOT for larger SQL queries New Patch Name = Turning off HOT for larger SQL queries, Topic = Performance, Patch Status = Needs Review, Author = Simon Riggs, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-12 03:34:56 simon Turning off HOT for larger SQL queries New Comment Patch: Initial version. (Message-ID: v7 CA+U5nM+T3h6Nn0xt5zUYi=uXhjHs4G1qvrTx36t0TVv2UVs94w@mail.gmail.com)
2014-12-12 03:33:01 simon Avoiding plan disasters with LIMIT New Patch Name = Avoiding plan disasters with LIMIT, Topic = Performance, Patch Status = Needs Review, Author = Simon Riggs, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-12 03:33:01 simon Avoiding plan disasters with LIMIT New Comment Patch: Initial version. (Message-ID: CA+U5nMJXYFVr_OUyU45W-q6BX=0H6K9DsSXFA4QZcoBzTO0WKA@mail.gmail.com)
2014-12-12 02:03:37 pjmodos Sequence Access Method Patch Edited Author = Petr Jelinek
2014-12-12 02:03:16 pjmodos Sequence Access Method New Comment Patch: New version - make AM fully responsible for the data in the sequence, allow AMs to specify custom columns in sequence tuple instead of single opaque amdata column (Message-ID: 5487B112.9090304@2ndquadrant.com)
2014-12-12 02:02:02 pjmodos Sequence Access Method Patch Edited Moved From CommitFest = 2014-10, Topic = Replication & Recovery, Patch Status = Needs Review, Date Closed = NULL
2014-12-11 15:28:07 ash pg_stat_ssl view New Comment Review: Looks good, minor details spotted. (Message-ID: 87ppbqz00h.fsf@commandprompt.com)
2014-12-11 10:49:01 jdavis Memory-bounded HashAgg New Comment Patch: Open items completed. (Message-ID: 1418294807.5584.32.camel@jeff-desktop)
2014-12-11 10:47:56 jdavis Memory-bounded HashAgg New Patch Name = Memory-bounded HashAgg, Topic = Miscellaneous, Patch Status = Needs Review, Author = Jeff Davis, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-11 10:47:56 jdavis Memory-bounded HashAgg New Comment Patch: Initial version. (Message-ID: 1407706010.6623.16.camel@jeff-desktop)
2014-12-11 10:18:55 ash Track TRUNCATE via pgstat: reset live/dead tuple counters New Comment Patch: v0.2 (Message-ID: 877fxz1tup.fsf@commandprompt.com)
2014-12-11 03:49:34 michael-kun Some bug fixes for REINDEX SCHEMA: unused variables defined, matviews and regression tests Patch Edited Patch Status = Ready for Committer
2014-12-11 03:49:27 michael-kun Some bug fixes for REINDEX SCHEMA: unused variables defined, matviews and regression tests Edit Comment Review: First patch works correctly.. Marking them as "Ready for committer" as those are only things bugs missing in former implementation. (Message-ID: CAFcNs+o+DZ9znhdmz=kSRXBL3=mZiuvYjcVmT+9cerJdTfLcMg@mail.gmail.com)
2014-12-11 03:48:39 michael-kun Some bug fixes for REINDEX SCHEMA: unused variables defined, matviews and regression tests New Comment Review: First patch works correctly.. (Message-ID: CAFcNs+o+DZ9znhdmz=kSRXBL3=mZiuvYjcVmT+9cerJdTfLcMg@mail.gmail.com)
2014-12-11 03:47:46 michael-kun Some bug fixes for REINDEX SCHEMA: unused variables defined, matviews and regression tests New Comment Comment: Both patches should be committed.
2014-12-11 03:47:33 michael-kun Some bug fixes for REINDEX SCHEMA: unused variables defined, matviews and regression tests New Comment Patch: Fix for boolean variables do_user and do_database still not removed (Message-ID: CAD21AoCXFE1J+hSkbeJ80rqqnhR8m_YUxdGKwZ4dL8zPqT8gjg@mail.gmail.com)
2014-12-11 03:46:33 michael-kun Some bug fixes for REINDEX SCHEMA: unused variables defined, matviews and regression tests New Patch Name = Some bug fixes for REINDEX SCHEMA: unused variables defined, matviews and regression tests, Topic = Bug Fixes, Patch Status = Needs Review, Author = Sawada Masahiko, Michael Paquier, Reviewers = Fabrízio Mello, Committer = Nobody, Date Closed = NULL
2014-12-11 03:46:33 michael-kun Some bug fixes for REINDEX SCHEMA: unused variables defined, matviews and regression tests New Comment Patch: Initial version. (Message-ID: CAB7nPqRhPGKVfASinv2zkfvRs2Kwwvwpa8fqznCMeJtFFW2VqA@mail.gmail.com)
2014-12-10 23:30:27 pjmodos TABLESAMPLE clause Delete Comment Patch: Initial patch (Message-ID: 5488D641.2050303@2ndquadrant.com)
2014-12-10 23:30:13 pjmodos TABLESAMPLE clause New Comment Patch: Initial patch (Message-ID: 5488D641.2050303@2ndquadrant.com)
2014-12-10 23:28:18 pjmodos TABLESAMPLE clause New Patch Name = TABLESAMPLE clause, Topic = SQL Commands, Patch Status = Needs Review, Author = Petr Jelinek, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-10 23:28:18 pjmodos TABLESAMPLE clause New Comment Patch: Initial version. (Message-ID: 5488D641.2050303@2ndquadrant.com)
2014-12-10 10:08:35 davidrowley INNER JOIN removals New Comment Patch: Changes made to allow generation of 2 plans, the correct plan is selected at execution time. (Message-ID: CAApHDvpk8M6_PMH_rzJm6i2AiPZQz5emMZ-c8vfhrCxOH334Xw@mail.gmail.com)
2014-12-09 21:30:23 ash Track TRUNCATE via pgstat: reset live/dead tuple counters New Comment Patch: Initial version. (Message-ID: 87mw6w29gr.fsf@commandprompt.com)
2014-12-09 21:30:23 ash Track TRUNCATE via pgstat: reset live/dead tuple counters New Patch Name = Track TRUNCATE via pgstat: reset live/dead tuple counters, Topic = Bug Fixes, Patch Status = Needs Review, Author = Alex Shulgin, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-09 08:40:24 amitkapila Parallel Seq scan New Comment Patch: Initial version. (Message-ID: CAA4eK1KTv73uD9_W5wR4HiMZ_hgi8oseWncxbC53XwZDp-8aEg@mail.gmail.com)
2014-12-09 08:40:24 amitkapila Parallel Seq scan New Patch Name = Parallel Seq scan, Topic = Server Features, Patch Status = Needs Review, Author = Amit Kapila, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-08 15:07:14 abrightwell Additional role attributes Patch Edited Patch Status = Waiting on Author, Date Closed = NULL
2014-12-08 15:05:57 abrightwell Additional role attributes Patch Edited Moved From CommitFest = 2014-10, Topic = System Administration
2014-12-08 10:12:32 johngorman Fractions in GUC variables New Patch Name = Fractions in GUC variables, Topic = Miscellaneous, Patch Status = Needs Review, Author = John Gorman, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-08 10:12:32 johngorman Fractions in GUC variables New Comment Patch: Initial version. (Message-ID: CALkS6B824HNOJzyXikSNpXnknGcPjb20jO4p1ByBQRKGYJPp_A@mail.gmail.com)
2014-12-08 02:59:08 abrightwell Role Attribute Bitmask Representation New Comment Patch: Updated patch. role_attribute_bitmask-v4.patch - does not include documentation updates. (Message-ID: CAKRt6CT7QA2e5xdQHtQk3NGYANmZp=5ahPFuEm2gFojkB233BA@mail.gmail.com)
2014-12-07 23:47:55 simon Spurious set in heap_prune_chain Patch Edited Patch Status = Committed, Reviewers = Simon Riggs, Committer = Simon Riggs, Date Closed = 2014-12-08
2014-12-07 03:12:02 fuzzycz hashjoin - gracefully increasing NTUP_PER_BUCKET instead of batching Edit Comment Patch: Initial version. (Message-ID: 5483C4AC.5060107@fuzzy.cz)
2014-12-07 03:11:55 fuzzycz hashjoin - gracefully increasing NTUP_PER_BUCKET instead of batching New Patch Name = hashjoin - gracefully increasing NTUP_PER_BUCKET instead of batching, Topic = Performance, Patch Status = Needs Review, Author = Tomas Vondra, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-07 03:11:55 fuzzycz hashjoin - gracefully increasing NTUP_PER_BUCKET instead of batching New Comment Patch: Initial version. (Message-ID: 5483C4AC.5060107@fuzzy.cz)
2014-12-07 01:56:10 fuzzycz adaptive ndistinct estimator New Comment Patch: v3 of the patch, implementing the 'minimal' case and various other improvements (Message-ID: 5483B346.6000203@fuzzy.cz)
2014-12-06 21:50:52 fuzzycz decreasing array_agg memory consumption Edit Comment Patch: Reworked patch, originally submitted to 2014-08. (Message-ID: 5479FAEA.3070501@fuzzy.cz)
2014-12-06 21:50:41 fuzzycz decreasing array_agg memory consumption Delete Comment Patch: this is a reworked patch originally submitted to 2014-08 (Message-ID: 5479FAEA.3070501@fuzzy.cz)
2014-12-06 21:50:15 fuzzycz decreasing array_agg memory consumption Edit Comment Patch: this is a reworked patch originally submitted to 2014-08 (Message-ID: 5479FAEA.3070501@fuzzy.cz)
2014-12-05 18:02:37 petere Fix installation of shared libraries on Windows (mingw) New Comment Comment: Previously attached to this entry: https://commitfest.postgresql.org/action/patch_view?id=1330, but made a separate entry now.
2014-12-05 18:02:08 petere Fix installation of shared libraries on Windows (mingw) New Patch Name = Fix installation of shared libraries on Windows (mingw), Topic = Bug Fixes, Patch Status = Needs Review, Author = Peter Eisentraut, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-05 18:02:08 petere Fix installation of shared libraries on Windows (mingw) New Comment Patch: Initial version. (Message-ID: 530D06FF.3030004@gmx.net)
2014-12-05 11:03:11 ash Allow TOAST tables to be moved to a different tablespace New Comment Patch: Initial version. (Message-ID: 87r3wn5lhq.fsf@commandprompt.com)
2014-12-05 11:03:11 ash Allow TOAST tables to be moved to a different tablespace New Patch Name = Allow TOAST tables to be moved to a different tablespace, Topic = Server Features, Patch Status = Needs Review, Author = Julien Tachoires, Alex Shulgin, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-04 16:52:23 petere Perl coding error in msvc build system New Comment Patch: Initial version. (Message-ID: 1401849050.17288.0.camel@vanquo.pezone.net)
2014-12-04 16:52:23 petere Perl coding error in msvc build system New Patch Name = Perl coding error in msvc build system, Topic = Bug Fixes, Patch Status = Needs Review, Author = Peter Eisentraut, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-04 16:50:33 petere Error when creating names too long for tar format New Comment Comment: Part of this ought to be backpatched. Part of it depends on the outcome of <https://commitfest.postgresql.org/action/patch_view?id=1512>.
2014-12-04 16:49:36 petere Error when creating names too long for tar format New Patch Name = Error when creating names too long for tar format, Topic = Bug Fixes, Patch Status = Needs Review, Author = Peter Eisentraut, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-04 16:49:36 petere Error when creating names too long for tar format New Comment Patch: Initial version. (Message-ID: 545D79DB.4060507@gmx.net)
2014-12-03 06:14:01 kaigai Foreign-/Custom-Join-APIs Patch Edited Name = Custom/Foreign-Join-APIs
2014-12-03 06:13:41 kaigai Foreign-/Custom-Join-APIs New Patch Name = Foreign-/Custom-Join-APIs, Topic = Server Features, Patch Status = Needs Review, Author = KaiGai Kohei, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-12-03 06:13:41 kaigai Foreign-/Custom-Join-APIs New Comment Patch: Initial version. (Message-ID: 9A28C8860F777E439AA12E8AEA7694F80108C355@BPXM15GP.gisp.nec.co.jp)
2014-12-02 23:27:59 michael-kun Documentation fixes for BRIN indexes Patch Edited Patch Status = Committed, Committer = Alvaro Herrera, Date Closed = 2014-12-02
2014-12-02 14:28:10 mtimm_01 explain_sortorder-patch Edit Comment Patch: Initial version. (Message-ID: F4FF595C-D39D-4036-A446-57C91ABE6B31@exchange.wwu.de)
2014-12-02 14:26:53 mtimm_01 explain_sortorder-patch Edit Comment Patch: Initial version. (Message-ID: F4FF595C-D39D-4036-A446-57C91ABE6B31)
2014-12-01 17:02:34 ash Turn recovery.conf parameters into GUCs Patch Edited Patch Status = Needs Review, Date Closed = NULL
2014-12-01 17:01:30 ash Turn recovery.conf parameters into GUCs Patch Edited Moved From CommitFest = 2014-01, Topic = Replication & Recovery
2014-12-01 12:51:51 sigaev compress method for spgist New Comment Patch: Second version (Message-ID: http://www.postgresql.org/message-id/547C62AF.2050207@sigaev.ru)
2014-12-01 02:53:39 decibel Log inabality to acquire cleanup lock in vacuum New Comment Patch: New patch only logs; no retry. (Message-ID: 547BD69B.5050900@BlueTreble.com)
2014-12-01 02:52:58 decibel Retry cleanup locks in vacuum Patch Edited Name = Log inabality to acquire cleanup lock in vacuum
2014-11-30 05:50:40 davidrowley INNER JOIN removals New Comment Patch: Fixes problem with PREPAREd statements (Message-ID: CAApHDvocUEYdt1uT+DLDPs2xEu=v3qJGT6HeXKonQM4rY_OsSA@mail.gmail.com)
2014-11-29 17:00:11 fuzzycz decreasing array_agg memory consumption New Comment Comment: this is a reworked patch originally submitted to 2014-08 (Message-ID: 5479FAEA.3070501@fuzzy.cz)
2014-11-29 16:59:16 fuzzycz decreasing array_agg memory consumption New Patch Name = decreasing array_agg memory consumption, Topic = Miscellaneous, Patch Status = Needs Review, Author = Tomas Vondra, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-29 16:59:16 fuzzycz decreasing array_agg memory consumption New Comment Patch: Initial version. (Message-ID: 5479FAEA.3070501@fuzzy.cz)
2014-11-29 00:24:31 abrightwell Role Attribute Bitmask Representation New Comment Patch: Updated patch to incorporate initial review recommendations/suggestions. (Message-ID: CAKRt6CTL9Y7wvt2Ti5T6OdezX4f3gLf=HxPUx3vO7GXV0ATciQ@mail.gmail.com)
2014-11-29 00:23:42 abrightwell Role Attribute Bitmask Representation New Comment Patch: Initial version. (Message-ID: CAKRt6CRskqEEMRw9pvFVyRcCvS9S_tZhVjBGFMnvYSo-pB5gRw@mail.gmail.com)
2014-11-29 00:23:42 abrightwell Role Attribute Bitmask Representation New Patch Name = Role Attribute Bitmask Representation, Topic = Miscellaneous, Patch Status = Needs Review, Author = Adam Brightwell, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-28 09:46:48 smagen Fillfactor for GIN indexes Patch Edited Patch Status = Waiting on Author, Reviewers = Alexander Korotkov
2014-11-28 09:46:37 smagen Fillfactor for GIN indexes New Comment Review: First look at the patch. (Message-ID: CAPpHfdsbeULKQdpPzSmGMpNj=62Dg48GmbN0d17xmYvQn0mhKg@mail.gmail.com)
2014-11-27 05:50:22 michael-kun Enable detection of c++ files in MSVC scripts New Comment Patch: Rewrite grammar of patch and take into account lpp and ypp files. (Message-ID: CAB7nPqRNSqGzsDiMR9YCCErBUQHLFQYVJvEwHqJwvSqRyPS7GQ@mail.gmail.com)
2014-11-27 05:49:29 michael-kun Enable detection of cpp files in MSVC scripts Patch Edited Name = Enable detection of c++ files in MSVC scripts
2014-11-26 16:41:48 mtimm_01 explain_sortorder-patch Patch Edited Author = Marius Timmer, Lukas Kreft, Arne Scheffer
2014-11-26 04:47:50 michael-kun Enable detection of cpp files in MSVC scripts New Patch Name = Enable detection of cpp files in MSVC scripts, Topic = Server Features, Patch Status = Needs Review, Author = Michael Paquier, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-26 04:47:50 michael-kun Enable detection of cpp files in MSVC scripts New Comment Patch: Initial version. (Message-ID: CAB7nPqSC3KPU7+AUBU48e8w29eQoTOxYGr1Fv0Zds5rj-shy9Q@mail.gmail.com)
2014-11-26 03:59:06 michael-kun Documentation fixes for BRIN indexes New Patch Name = Documentation fixes for BRIN indexes, Topic = Documentation, Patch Status = Needs Review, Author = Michael Paquier, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-26 03:59:06 michael-kun Documentation fixes for BRIN indexes New Comment Patch: Initial version. (Message-ID: CAB7nPqSpKoKqenq61yV2frxP_5p32vBx_mQK1UNk04cZVjz4+w@mail.gmail.com)
2014-11-25 15:11:35 mtimm_01 explain_sortorder-patch Patch Edited Author = Marius Timmer
2014-11-25 15:11:21 mtimm_01 explain_sortorder-patch Patch Edited Committer = Nobody
2014-11-25 11:42:30 mtimm_01 explain_sortorder-patch Delete Comment Patch: Hello everyone, For creating indexes on more than one column, it is useful to know the sort order of each sort key. So now, if you run EXPLAIN in VERBOSE mode, you get the sort order information in the order the sort keys are displayed - Lukas - This patch is meant for discussion - It’s against the master branch - The patch compiles successfully and one test (inherit) is affected - There are no platform-specific items in this patch - The patch, as described, enhances EXPLAIN VERBOSE. For an example, see the regression test - There is no TODO item referring to this patch @patchname: explain_sortorder v2 @version: 2.01 @author: Marius Timmer <mtimm_01@uni-muenster.de>, Arne Scheffer <arne.scheffer@uni-muenster.de>, Lukas Kreft <lukaskreft@uni-muenster.de> @description: Display sort order options in VERBOSE mode of EXPLAIN - The situation Currently I am able to run a EXPLAIN-Statement (verbose) for getting more Information about a Query. But it is not enough to check in which order the results will be sorted, what could be interesting to modify some Statements so they can become more performant. - What this patch does This patch will add one more information to the result of an EXPLAIN- Statement in verbose-mode. You will find the new property "Sort order" which tells you the order of the used keys while sorting. You can use it in all available Formats. --- PATCH: --- From a864cfd1974d1fdf4f888434e963403782dca490 Mon Sep 17 00:00:00 2001 From: Arne Scheffer <scheffa@uni-muenster.de> Date: Sun, 9 Nov 2014 18:21:18 +0100 Subject: [PATCH 1/3] explain sortorder Display sort order options in VERBOSE mode of EXPLAIN For creating indexes on more than one column, it is useful to know the sort order of each sort key. So now, if you run EXPLAIN in VERBOSE mode, you get the sort order information in the order the sort keys are displayed. Signed-off-by: Marius Timmer <mtimm_01@uni-muenster.de> --- src/backend/commands/explain.c | 80 +++++++++++++++++++++++++ src/test/regress/expected/explain_sortorder.out | 19 ++++++ src/test/regress/expected/inherit.out | 9 ++- src/test/regress/parallel_schedule | 2 +- src/test/regress/serial_schedule | 1 + src/test/regress/sql/explain_sortorder.sql | 12 ++++ 6 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 src/test/regress/expected/explain_sortorder.out create mode 100644 src/test/regress/sql/explain_sortorder.sql diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 99aa0f0..c1be1ef 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -14,6 +14,9 @@ #include "postgres.h" #include "access/xact.h" +#include "access/htup_details.h" +#include "catalog/pg_collation.h" +#include "catalog/pg_operator.h" #include "catalog/pg_type.h" #include "commands/createas.h" #include "commands/defrem.h" @@ -30,7 +33,9 @@ #include "utils/rel.h" #include "utils/ruleutils.h" #include "utils/snapmgr.h" +#include "utils/syscache.h" #include "utils/tuplesort.h" +#include "utils/typcache.h" #include "utils/xml.h" @@ -84,6 +89,7 @@ static void show_group_keys(GroupState *gstate, List *ancestors, static void show_sort_group_keys(PlanState *planstate, const char *qlabel, int nkeys, AttrNumber *keycols, List *ancestors, ExplainState *es); +static void show_sort_order(SortState *sortstate, ExplainState *es); static void show_sort_info(SortState *sortstate, ExplainState *es); static void show_hash_info(HashState *hashstate, ExplainState *es); static void show_tidbitmap_info(BitmapHeapScanState *planstate, @@ -1436,6 +1442,8 @@ ExplainNode(PlanState *planstate, List *ancestors, break; case T_Sort: show_sort_keys((SortState *) planstate, ancestors, es); + if (es->verbose) + show_sort_order((SortState *)planstate, es); show_sort_info((SortState *) planstate, es); break; case T_MergeAppend: @@ -1879,7 +1887,79 @@ show_sort_group_keys(PlanState *planstate, const char *qlabel, ExplainPropertyList(qlabel, result, es); } +/* + * In verbose mode, additional information about the collation, sort order + * and NULLS FIRST/LAST is printed + */ +static void +show_sort_order(SortState *sortstate, ExplainState *es) +{ + Sort *plan = (Sort *) sortstate->ss.ps.plan; + Plan *planstatePlan = (Plan *) sortstate->ss.ps.plan; + + int nkeys = plan->numCols; + AttrNumber *keycols = plan->sortColIdx; + int keyno; + + Oid sortcoltype; + TypeCacheEntry *typentry; + + HeapTuple opertup; + Form_pg_operator operform; + char *oprname; + + if (nkeys <= 0) + return; + + appendStringInfoSpaces(es->str, es->indent * 2); + appendStringInfoString(es->str, "Sort Order:"); + + for (keyno = 0; keyno < nkeys; keyno++) + { + Oid collId = plan->collations[keyno]; + Oid operId = plan->sortOperators[keyno]; + + AttrNumber keyresno = keycols[keyno]; + TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, + keyresno); + + sortcoltype = exprType(target->expr); + typentry = lookup_type_cache(sortcoltype, + TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); + if (keyno!=0) + appendStringInfoString(es->str, ","); + + if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) + { + char *collname = get_collation_name(collId); + char *localeptr = setlocale(LC_COLLATE, NULL); + appendStringInfo(es->str, " COLLATE \"%s\"", collname); + /* for those who use COLLATE although their default is already + * the wanted */ + if (strcmp(collname, localeptr) == 0) + appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); + } + /* print verbose information, also defaults like ASC NULLS LAST*/ + if (operId == typentry->lt_opr) + appendStringInfoString(es->str, " ASC"); + else if (operId == typentry->gt_opr) + appendStringInfoString(es->str, " DESC"); + else + { + opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); + operform = (Form_pg_operator) GETSTRUCT (opertup); + oprname = NameStr(operform->oprname); + appendStringInfo(es->str, " USING %s", oprname); + ReleaseSysCache(opertup); + } + if (plan->nullsFirst[keyno]) + appendStringInfoString(es->str, " NULLS FIRST"); + else + appendStringInfoString(es->str, " NULLS LAST"); + } + appendStringInfoChar(es->str, '\n'); +} /* * If it's EXPLAIN ANALYZE, show tuplesort stats for a sort node */ diff --git a/src/test/regress/expected/explain_sortorder.out b/src/test/regress/expected/explain_sortorder.out new file mode 100644 index 0000000..ed39b51 --- /dev/null +++ b/src/test/regress/expected/explain_sortorder.out @@ -0,0 +1,19 @@ +-- +-- Test explain feature: sort order +-- +CREATE TABLE sortordertest (n1 char(1), n2 int4); +-- Insert values by which should be ordered +INSERT INTO sortordertest(n1, n2) VALUES ('d', 5), ('b', 3), ('a', 1), ('e', 2), ('c', 4); +-- Display sort order when explain analyze and verbose are true. +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM sortordertest ORDER BY n1 COLLATE "C" DESC, n2; + QUERY PLAN +------------------------------------------------------------ + Sort + Output: n1, n2, ((n1)::character(1)) + Sort Key: sortordertest.n1, sortordertest.n2 + Sort Order: COLLATE "C" DESC NULLS FIRST, ASC NULLS LAST + -> Seq Scan on public.sortordertest + Output: n1, n2, n1 +(6 rows) + +DROP TABLE sortordertest; diff --git a/src/test/regress/expected/inherit.out b/src/test/regress/expected/inherit.out index 56e2c99..9492066 100644 --- a/src/test/regress/expected/inherit.out +++ b/src/test/regress/expected/inherit.out @@ -1187,6 +1187,7 @@ explain (verbose, costs off) select * from matest0 order by 1-id; Sort Output: matest0.id, matest0.name, ((1 - matest0.id)) Sort Key: ((1 - matest0.id)) + Sort Order: ASC NULLS LAST -> Result Output: matest0.id, matest0.name, (1 - matest0.id) -> Append @@ -1198,7 +1199,7 @@ explain (verbose, costs off) select * from matest0 order by 1-id; Output: matest2.id, matest2.name -> Seq Scan on public.matest3 Output: matest3.id, matest3.name -(14 rows) +(15 rows) select * from matest0 order by 1-id; id | name @@ -1247,11 +1248,12 @@ explain (verbose, costs off) select * from matest0 order by 1-id; -> Sort Output: matest2.id, matest2.name, ((1 - matest2.id)) Sort Key: ((1 - matest2.id)) + Sort Order: ASC NULLS LAST -> Seq Scan on public.matest2 Output: matest2.id, matest2.name, (1 - matest2.id) -> Index Scan using matest3i on public.matest3 Output: matest3.id, matest3.name, (1 - matest3.id) -(13 rows) +(14 rows) select * from matest0 order by 1-id; id | name @@ -1285,6 +1287,7 @@ explain (verbose, costs off) select min(1-id) from matest0; -> Sort Output: matest2.id, ((1 - matest2.id)) Sort Key: ((1 - matest2.id)) + Sort Order: ASC NULLS LAST -> Bitmap Heap Scan on public.matest2 Output: matest2.id, (1 - matest2.id) Filter: ((1 - matest2.id) IS NOT NULL) @@ -1292,7 +1295,7 @@ explain (verbose, costs off) select min(1-id) from matest0; -> Index Scan using matest3i on public.matest3 Output: matest3.id, (1 - matest3.id) Index Cond: ((1 - matest3.id) IS NOT NULL) -(25 rows) +(26 rows) select min(1-id) from matest0; min diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index d4f02e5..7d12852 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -59,7 +59,7 @@ test: create_index create_view # ---------- # Another group of parallel tests # ---------- -test: create_aggregate create_function_3 create_cast constraints triggers inherit create_table_like typed_table vacuum drop_if_exists updatable_views +test: create_aggregate create_function_3 create_cast constraints triggers inherit create_table_like typed_table vacuum drop_if_exists updatable_views explain_sortorder # ---------- # sanity_check does a vacuum, affecting the sort order of SELECT * diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule index 611b0a8..bbca2c6 100644 --- a/src/test/regress/serial_schedule +++ b/src/test/regress/serial_schedule @@ -71,6 +71,7 @@ test: typed_table test: vacuum test: drop_if_exists test: updatable_views +test: explain_sortorder test: sanity_check test: errors test: select diff --git a/src/test/regress/sql/explain_sortorder.sql b/src/test/regress/sql/explain_sortorder.sql new file mode 100644 index 0000000..2600316 --- /dev/null +++ b/src/test/regress/sql/explain_sortorder.sql @@ -0,0 +1,12 @@ +-- +-- Test explain feature: sort order +-- +CREATE TABLE sortordertest (n1 char(1), n2 int4); + +-- Insert values by which should be ordered +INSERT INTO sortordertest(n1, n2) VALUES ('d', 5), ('b', 3), ('a', 1), ('e', 2), ('c', 4); + +-- Display sort order when explain analyze and verbose are true. +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM sortordertest ORDER BY n1 COLLATE "C" DESC, n2; + +DROP TABLE sortordertest; -- 1.9.1 From f144abdf5e529ae131927fee1f0865f5288512fa Mon Sep 17 00:00:00 2001 From: mtimm_01 <mtimm_01@uni-muenster.de> Date: Thu, 20 Nov 2014 12:55:30 +0100 Subject: [PATCH 2/3] Included Testline --- src/backend/commands/explain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index c1be1ef..3dc402d 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1937,6 +1937,7 @@ show_sort_order(SortState *sortstate, ExplainState *es) appendStringInfo(es->str, " COLLATE \"%s\"", collname); /* for those who use COLLATE although their default is already * the wanted */ + /* This is a testline made by mtimm_01 */ if (strcmp(collname, localeptr) == 0) appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); } -- 1.9.1 From 3b2fdc73b7034511e59d57671ed37429c5b62cca Mon Sep 17 00:00:00 2001 From: mtimm_01 <mtimm_01@uni-muenster.de> Date: Thu, 20 Nov 2014 18:27:16 +0100 Subject: [PATCH 3/3] Output now in correct format --- src/backend/commands/explain.c | 115 +++++++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 50 deletions(-) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 3dc402d..1874979 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1908,58 +1908,73 @@ show_sort_order(SortState *sortstate, ExplainState *es) Form_pg_operator operform; char *oprname; + List *elements = NIL; + if (nkeys <= 0) + { return; - - appendStringInfoSpaces(es->str, es->indent * 2); - appendStringInfoString(es->str, "Sort Order:"); - - for (keyno = 0; keyno < nkeys; keyno++) - { - Oid collId = plan->collations[keyno]; - Oid operId = plan->sortOperators[keyno]; - - AttrNumber keyresno = keycols[keyno]; - TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, - keyresno); - - sortcoltype = exprType(target->expr); - typentry = lookup_type_cache(sortcoltype, - TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); - - if (keyno!=0) - appendStringInfoString(es->str, ","); - - if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) - { - char *collname = get_collation_name(collId); - char *localeptr = setlocale(LC_COLLATE, NULL); - appendStringInfo(es->str, " COLLATE \"%s\"", collname); - /* for those who use COLLATE although their default is already - * the wanted */ - /* This is a testline made by mtimm_01 */ - if (strcmp(collname, localeptr) == 0) - appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); - } - /* print verbose information, also defaults like ASC NULLS LAST*/ - if (operId == typentry->lt_opr) - appendStringInfoString(es->str, " ASC"); - else if (operId == typentry->gt_opr) - appendStringInfoString(es->str, " DESC"); - else - { - opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); - operform = (Form_pg_operator) GETSTRUCT (opertup); - oprname = NameStr(operform->oprname); - appendStringInfo(es->str, " USING %s", oprname); - ReleaseSysCache(opertup); - } - if (plan->nullsFirst[keyno]) - appendStringInfoString(es->str, " NULLS FIRST"); - else - appendStringInfoString(es->str, " NULLS LAST"); - } - appendStringInfoChar(es->str, '\n'); + } + + for (keyno = 0; keyno < nkeys; keyno++) + { + char sort_order_value[200] = ""; + Oid collId = plan->collations[keyno]; + Oid operId = plan->sortOperators[keyno]; + + AttrNumber keyresno = keycols[keyno]; + TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, + keyresno); + + sortcoltype = exprType(target->expr); + typentry = lookup_type_cache(sortcoltype, + TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); + + if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) + { + char *collname = get_collation_name(collId); + char *localeptr = setlocale(LC_COLLATE, NULL); + strcat(sort_order_value, "COLLATE \""); + strcat(sort_order_value, collname); + strcat(sort_order_value, "\""); + /* for those who use COLLATE although their default is already + * the wanted */ + if (strcmp(collname, localeptr) == 0) + { + strcat(sort_order_value, " ("); + strcat(sort_order_value, collname); + strcat(sort_order_value, " is LC_COLLATE)"); + } + } + /* print verbose information, also defaults like ASC NULLS LAST*/ + if (operId == typentry->lt_opr) + { + strcat(sort_order_value, " ASC"); + } + else if (operId == typentry->gt_opr) + { + strcat(sort_order_value, " DESC"); + } + else + { + opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); + operform = (Form_pg_operator) GETSTRUCT (opertup); + oprname = NameStr(operform->oprname); + strcat(sort_order_value, " USING "); + strcat(sort_order_value, oprname); + ReleaseSysCache(opertup); + } + if (plan->nullsFirst[keyno]) + { + strcat(sort_order_value, " NULLS FIRST"); + } + else + { + strcat(sort_order_value, " NULLS LAST"); + } + elements = lappend(elements, sort_order_value); + } + + ExplainPropertyList("Sort Order", elements, es); } /* * If it's EXPLAIN ANALYZE, show tuplesort stats for a sort node -- 1.9.1
2014-11-25 11:40:31 mtimm_01 explain_sortorder-patch New Comment Patch: Hello everyone, For creating indexes on more than one column, it is useful to know the sort order of each sort key. So now, if you run EXPLAIN in VERBOSE mode, you get the sort order information in the order the sort keys are displayed - Lukas - This patch is meant for discussion - It’s against the master branch - The patch compiles successfully and one test (inherit) is affected - There are no platform-specific items in this patch - The patch, as described, enhances EXPLAIN VERBOSE. For an example, see the regression test - There is no TODO item referring to this patch @patchname: explain_sortorder v2 @version: 2.01 @author: Marius Timmer <mtimm_01@uni-muenster.de>, Arne Scheffer <arne.scheffer@uni-muenster.de>, Lukas Kreft <lukaskreft@uni-muenster.de> @description: Display sort order options in VERBOSE mode of EXPLAIN - The situation Currently I am able to run a EXPLAIN-Statement (verbose) for getting more Information about a Query. But it is not enough to check in which order the results will be sorted, what could be interesting to modify some Statements so they can become more performant. - What this patch does This patch will add one more information to the result of an EXPLAIN- Statement in verbose-mode. You will find the new property "Sort order" which tells you the order of the used keys while sorting. You can use it in all available Formats. --- PATCH: --- From a864cfd1974d1fdf4f888434e963403782dca490 Mon Sep 17 00:00:00 2001 From: Arne Scheffer <scheffa@uni-muenster.de> Date: Sun, 9 Nov 2014 18:21:18 +0100 Subject: [PATCH 1/3] explain sortorder Display sort order options in VERBOSE mode of EXPLAIN For creating indexes on more than one column, it is useful to know the sort order of each sort key. So now, if you run EXPLAIN in VERBOSE mode, you get the sort order information in the order the sort keys are displayed. Signed-off-by: Marius Timmer <mtimm_01@uni-muenster.de> --- src/backend/commands/explain.c | 80 +++++++++++++++++++++++++ src/test/regress/expected/explain_sortorder.out | 19 ++++++ src/test/regress/expected/inherit.out | 9 ++- src/test/regress/parallel_schedule | 2 +- src/test/regress/serial_schedule | 1 + src/test/regress/sql/explain_sortorder.sql | 12 ++++ 6 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 src/test/regress/expected/explain_sortorder.out create mode 100644 src/test/regress/sql/explain_sortorder.sql diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 99aa0f0..c1be1ef 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -14,6 +14,9 @@ #include "postgres.h" #include "access/xact.h" +#include "access/htup_details.h" +#include "catalog/pg_collation.h" +#include "catalog/pg_operator.h" #include "catalog/pg_type.h" #include "commands/createas.h" #include "commands/defrem.h" @@ -30,7 +33,9 @@ #include "utils/rel.h" #include "utils/ruleutils.h" #include "utils/snapmgr.h" +#include "utils/syscache.h" #include "utils/tuplesort.h" +#include "utils/typcache.h" #include "utils/xml.h" @@ -84,6 +89,7 @@ static void show_group_keys(GroupState *gstate, List *ancestors, static void show_sort_group_keys(PlanState *planstate, const char *qlabel, int nkeys, AttrNumber *keycols, List *ancestors, ExplainState *es); +static void show_sort_order(SortState *sortstate, ExplainState *es); static void show_sort_info(SortState *sortstate, ExplainState *es); static void show_hash_info(HashState *hashstate, ExplainState *es); static void show_tidbitmap_info(BitmapHeapScanState *planstate, @@ -1436,6 +1442,8 @@ ExplainNode(PlanState *planstate, List *ancestors, break; case T_Sort: show_sort_keys((SortState *) planstate, ancestors, es); + if (es->verbose) + show_sort_order((SortState *)planstate, es); show_sort_info((SortState *) planstate, es); break; case T_MergeAppend: @@ -1879,7 +1887,79 @@ show_sort_group_keys(PlanState *planstate, const char *qlabel, ExplainPropertyList(qlabel, result, es); } +/* + * In verbose mode, additional information about the collation, sort order + * and NULLS FIRST/LAST is printed + */ +static void +show_sort_order(SortState *sortstate, ExplainState *es) +{ + Sort *plan = (Sort *) sortstate->ss.ps.plan; + Plan *planstatePlan = (Plan *) sortstate->ss.ps.plan; + + int nkeys = plan->numCols; + AttrNumber *keycols = plan->sortColIdx; + int keyno; + + Oid sortcoltype; + TypeCacheEntry *typentry; + + HeapTuple opertup; + Form_pg_operator operform; + char *oprname; + + if (nkeys <= 0) + return; + + appendStringInfoSpaces(es->str, es->indent * 2); + appendStringInfoString(es->str, "Sort Order:"); + + for (keyno = 0; keyno < nkeys; keyno++) + { + Oid collId = plan->collations[keyno]; + Oid operId = plan->sortOperators[keyno]; + + AttrNumber keyresno = keycols[keyno]; + TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, + keyresno); + + sortcoltype = exprType(target->expr); + typentry = lookup_type_cache(sortcoltype, + TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); + if (keyno!=0) + appendStringInfoString(es->str, ","); + + if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) + { + char *collname = get_collation_name(collId); + char *localeptr = setlocale(LC_COLLATE, NULL); + appendStringInfo(es->str, " COLLATE \"%s\"", collname); + /* for those who use COLLATE although their default is already + * the wanted */ + if (strcmp(collname, localeptr) == 0) + appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); + } + /* print verbose information, also defaults like ASC NULLS LAST*/ + if (operId == typentry->lt_opr) + appendStringInfoString(es->str, " ASC"); + else if (operId == typentry->gt_opr) + appendStringInfoString(es->str, " DESC"); + else + { + opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); + operform = (Form_pg_operator) GETSTRUCT (opertup); + oprname = NameStr(operform->oprname); + appendStringInfo(es->str, " USING %s", oprname); + ReleaseSysCache(opertup); + } + if (plan->nullsFirst[keyno]) + appendStringInfoString(es->str, " NULLS FIRST"); + else + appendStringInfoString(es->str, " NULLS LAST"); + } + appendStringInfoChar(es->str, '\n'); +} /* * If it's EXPLAIN ANALYZE, show tuplesort stats for a sort node */ diff --git a/src/test/regress/expected/explain_sortorder.out b/src/test/regress/expected/explain_sortorder.out new file mode 100644 index 0000000..ed39b51 --- /dev/null +++ b/src/test/regress/expected/explain_sortorder.out @@ -0,0 +1,19 @@ +-- +-- Test explain feature: sort order +-- +CREATE TABLE sortordertest (n1 char(1), n2 int4); +-- Insert values by which should be ordered +INSERT INTO sortordertest(n1, n2) VALUES ('d', 5), ('b', 3), ('a', 1), ('e', 2), ('c', 4); +-- Display sort order when explain analyze and verbose are true. +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM sortordertest ORDER BY n1 COLLATE "C" DESC, n2; + QUERY PLAN +------------------------------------------------------------ + Sort + Output: n1, n2, ((n1)::character(1)) + Sort Key: sortordertest.n1, sortordertest.n2 + Sort Order: COLLATE "C" DESC NULLS FIRST, ASC NULLS LAST + -> Seq Scan on public.sortordertest + Output: n1, n2, n1 +(6 rows) + +DROP TABLE sortordertest; diff --git a/src/test/regress/expected/inherit.out b/src/test/regress/expected/inherit.out index 56e2c99..9492066 100644 --- a/src/test/regress/expected/inherit.out +++ b/src/test/regress/expected/inherit.out @@ -1187,6 +1187,7 @@ explain (verbose, costs off) select * from matest0 order by 1-id; Sort Output: matest0.id, matest0.name, ((1 - matest0.id)) Sort Key: ((1 - matest0.id)) + Sort Order: ASC NULLS LAST -> Result Output: matest0.id, matest0.name, (1 - matest0.id) -> Append @@ -1198,7 +1199,7 @@ explain (verbose, costs off) select * from matest0 order by 1-id; Output: matest2.id, matest2.name -> Seq Scan on public.matest3 Output: matest3.id, matest3.name -(14 rows) +(15 rows) select * from matest0 order by 1-id; id | name @@ -1247,11 +1248,12 @@ explain (verbose, costs off) select * from matest0 order by 1-id; -> Sort Output: matest2.id, matest2.name, ((1 - matest2.id)) Sort Key: ((1 - matest2.id)) + Sort Order: ASC NULLS LAST -> Seq Scan on public.matest2 Output: matest2.id, matest2.name, (1 - matest2.id) -> Index Scan using matest3i on public.matest3 Output: matest3.id, matest3.name, (1 - matest3.id) -(13 rows) +(14 rows) select * from matest0 order by 1-id; id | name @@ -1285,6 +1287,7 @@ explain (verbose, costs off) select min(1-id) from matest0; -> Sort Output: matest2.id, ((1 - matest2.id)) Sort Key: ((1 - matest2.id)) + Sort Order: ASC NULLS LAST -> Bitmap Heap Scan on public.matest2 Output: matest2.id, (1 - matest2.id) Filter: ((1 - matest2.id) IS NOT NULL) @@ -1292,7 +1295,7 @@ explain (verbose, costs off) select min(1-id) from matest0; -> Index Scan using matest3i on public.matest3 Output: matest3.id, (1 - matest3.id) Index Cond: ((1 - matest3.id) IS NOT NULL) -(25 rows) +(26 rows) select min(1-id) from matest0; min diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index d4f02e5..7d12852 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -59,7 +59,7 @@ test: create_index create_view # ---------- # Another group of parallel tests # ---------- -test: create_aggregate create_function_3 create_cast constraints triggers inherit create_table_like typed_table vacuum drop_if_exists updatable_views +test: create_aggregate create_function_3 create_cast constraints triggers inherit create_table_like typed_table vacuum drop_if_exists updatable_views explain_sortorder # ---------- # sanity_check does a vacuum, affecting the sort order of SELECT * diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule index 611b0a8..bbca2c6 100644 --- a/src/test/regress/serial_schedule +++ b/src/test/regress/serial_schedule @@ -71,6 +71,7 @@ test: typed_table test: vacuum test: drop_if_exists test: updatable_views +test: explain_sortorder test: sanity_check test: errors test: select diff --git a/src/test/regress/sql/explain_sortorder.sql b/src/test/regress/sql/explain_sortorder.sql new file mode 100644 index 0000000..2600316 --- /dev/null +++ b/src/test/regress/sql/explain_sortorder.sql @@ -0,0 +1,12 @@ +-- +-- Test explain feature: sort order +-- +CREATE TABLE sortordertest (n1 char(1), n2 int4); + +-- Insert values by which should be ordered +INSERT INTO sortordertest(n1, n2) VALUES ('d', 5), ('b', 3), ('a', 1), ('e', 2), ('c', 4); + +-- Display sort order when explain analyze and verbose are true. +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM sortordertest ORDER BY n1 COLLATE "C" DESC, n2; + +DROP TABLE sortordertest; -- 1.9.1 From f144abdf5e529ae131927fee1f0865f5288512fa Mon Sep 17 00:00:00 2001 From: mtimm_01 <mtimm_01@uni-muenster.de> Date: Thu, 20 Nov 2014 12:55:30 +0100 Subject: [PATCH 2/3] Included Testline --- src/backend/commands/explain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index c1be1ef..3dc402d 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1937,6 +1937,7 @@ show_sort_order(SortState *sortstate, ExplainState *es) appendStringInfo(es->str, " COLLATE \"%s\"", collname); /* for those who use COLLATE although their default is already * the wanted */ + /* This is a testline made by mtimm_01 */ if (strcmp(collname, localeptr) == 0) appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); } -- 1.9.1 From 3b2fdc73b7034511e59d57671ed37429c5b62cca Mon Sep 17 00:00:00 2001 From: mtimm_01 <mtimm_01@uni-muenster.de> Date: Thu, 20 Nov 2014 18:27:16 +0100 Subject: [PATCH 3/3] Output now in correct format --- src/backend/commands/explain.c | 115 +++++++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 50 deletions(-) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 3dc402d..1874979 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1908,58 +1908,73 @@ show_sort_order(SortState *sortstate, ExplainState *es) Form_pg_operator operform; char *oprname; + List *elements = NIL; + if (nkeys <= 0) + { return; - - appendStringInfoSpaces(es->str, es->indent * 2); - appendStringInfoString(es->str, "Sort Order:"); - - for (keyno = 0; keyno < nkeys; keyno++) - { - Oid collId = plan->collations[keyno]; - Oid operId = plan->sortOperators[keyno]; - - AttrNumber keyresno = keycols[keyno]; - TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, - keyresno); - - sortcoltype = exprType(target->expr); - typentry = lookup_type_cache(sortcoltype, - TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); - - if (keyno!=0) - appendStringInfoString(es->str, ","); - - if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) - { - char *collname = get_collation_name(collId); - char *localeptr = setlocale(LC_COLLATE, NULL); - appendStringInfo(es->str, " COLLATE \"%s\"", collname); - /* for those who use COLLATE although their default is already - * the wanted */ - /* This is a testline made by mtimm_01 */ - if (strcmp(collname, localeptr) == 0) - appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); - } - /* print verbose information, also defaults like ASC NULLS LAST*/ - if (operId == typentry->lt_opr) - appendStringInfoString(es->str, " ASC"); - else if (operId == typentry->gt_opr) - appendStringInfoString(es->str, " DESC"); - else - { - opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); - operform = (Form_pg_operator) GETSTRUCT (opertup); - oprname = NameStr(operform->oprname); - appendStringInfo(es->str, " USING %s", oprname); - ReleaseSysCache(opertup); - } - if (plan->nullsFirst[keyno]) - appendStringInfoString(es->str, " NULLS FIRST"); - else - appendStringInfoString(es->str, " NULLS LAST"); - } - appendStringInfoChar(es->str, '\n'); + } + + for (keyno = 0; keyno < nkeys; keyno++) + { + char sort_order_value[200] = ""; + Oid collId = plan->collations[keyno]; + Oid operId = plan->sortOperators[keyno]; + + AttrNumber keyresno = keycols[keyno]; + TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, + keyresno); + + sortcoltype = exprType(target->expr); + typentry = lookup_type_cache(sortcoltype, + TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); + + if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) + { + char *collname = get_collation_name(collId); + char *localeptr = setlocale(LC_COLLATE, NULL); + strcat(sort_order_value, "COLLATE \""); + strcat(sort_order_value, collname); + strcat(sort_order_value, "\""); + /* for those who use COLLATE although their default is already + * the wanted */ + if (strcmp(collname, localeptr) == 0) + { + strcat(sort_order_value, " ("); + strcat(sort_order_value, collname); + strcat(sort_order_value, " is LC_COLLATE)"); + } + } + /* print verbose information, also defaults like ASC NULLS LAST*/ + if (operId == typentry->lt_opr) + { + strcat(sort_order_value, " ASC"); + } + else if (operId == typentry->gt_opr) + { + strcat(sort_order_value, " DESC"); + } + else + { + opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); + operform = (Form_pg_operator) GETSTRUCT (opertup); + oprname = NameStr(operform->oprname); + strcat(sort_order_value, " USING "); + strcat(sort_order_value, oprname); + ReleaseSysCache(opertup); + } + if (plan->nullsFirst[keyno]) + { + strcat(sort_order_value, " NULLS FIRST"); + } + else + { + strcat(sort_order_value, " NULLS LAST"); + } + elements = lappend(elements, sort_order_value); + } + + ExplainPropertyList("Sort Order", elements, es); } /* * If it's EXPLAIN ANALYZE, show tuplesort stats for a sort node -- 1.9.1
2014-11-25 11:39:52 mtimm_01 explain_sortorder-patch New Patch Name = explain_sortorder-patch, Topic = Server Features, Patch Status = Needs Review, Author = Marius Timmer <mtimm_01@uni-muenster.de>, Reviewers = Nobody, Committer = Marius Timmer <mtimm_01@uni-muenster.de>, Date Closed = NULL
2014-11-25 11:39:52 mtimm_01 explain_sortorder-patch New Comment Patch: Initial version. (Message-ID: a864cfd1974d1fdf4f888434e963403782dca490)
2014-11-25 11:35:46 mtimm_01 explain sortorder Patch Deleted
2014-11-25 11:35:44 mtimm_01 explain sortorder Delete Comment Comment: Hello everyone, For creating indexes on more than one column, it is useful to know the sort order of each sort key. So now, if you run EXPLAIN in VERBOSE mode, you get the sort order information in the order the sort keys are displayed - Lukas - This patch is meant for discussion - It’s against the master branch - The patch compiles successfully and one test (inherit) is affected - There are no platform-specific items in this patch - The patch, as described, enhances EXPLAIN VERBOSE. For an example, see the regression test - There is no TODO item referring to this patch @patchname: explain_sortorder v2 @version: 2.01 @author: Marius Timmer <mtimm_01@uni-muenster.de>, Arne Scheffer <arne.scheffer@uni-muenster.de>, Lukas Kreft <lukaskreft@uni-muenster.de> @description: Display sort order options in VERBOSE mode of EXPLAIN - The situation Currently I am able to run a EXPLAIN-Statement (verbose) for getting more Information about a Query. But it is not enough to check in which order the results will be sorted, what could be interesting to modify some Statements so they can become more performant. - What this patch does This patch will add one more information to the result of an EXPLAIN- Statement in verbose-mode. You will find the new property "Sort order" which tells you the order of the used keys while sorting. You can use it in all available Formats.
2014-11-25 11:35:39 mtimm_01 explain sortorder Delete Comment Patch: From a864cfd1974d1fdf4f888434e963403782dca490 Mon Sep 17 00:00:00 2001 From: Arne Scheffer <scheffa@uni-muenster.de> Date: Sun, 9 Nov 2014 18:21:18 +0100 Subject: [PATCH 1/3] explain sortorder Display sort order options in VERBOSE mode of EXPLAIN For creating indexes on more than one column, it is useful to know the sort order of each sort key. So now, if you run EXPLAIN in VERBOSE mode, you get the sort order information in the order the sort keys are displayed. Signed-off-by: Marius Timmer <mtimm_01@uni-muenster.de> --- src/backend/commands/explain.c | 80 +++++++++++++++++++++++++ src/test/regress/expected/explain_sortorder.out | 19 ++++++ src/test/regress/expected/inherit.out | 9 ++- src/test/regress/parallel_schedule | 2 +- src/test/regress/serial_schedule | 1 + src/test/regress/sql/explain_sortorder.sql | 12 ++++ 6 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 src/test/regress/expected/explain_sortorder.out create mode 100644 src/test/regress/sql/explain_sortorder.sql diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 99aa0f0..c1be1ef 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -14,6 +14,9 @@ #include "postgres.h" #include "access/xact.h" +#include "access/htup_details.h" +#include "catalog/pg_collation.h" +#include "catalog/pg_operator.h" #include "catalog/pg_type.h" #include "commands/createas.h" #include "commands/defrem.h" @@ -30,7 +33,9 @@ #include "utils/rel.h" #include "utils/ruleutils.h" #include "utils/snapmgr.h" +#include "utils/syscache.h" #include "utils/tuplesort.h" +#include "utils/typcache.h" #include "utils/xml.h" @@ -84,6 +89,7 @@ static void show_group_keys(GroupState *gstate, List *ancestors, static void show_sort_group_keys(PlanState *planstate, const char *qlabel, int nkeys, AttrNumber *keycols, List *ancestors, ExplainState *es); +static void show_sort_order(SortState *sortstate, ExplainState *es); static void show_sort_info(SortState *sortstate, ExplainState *es); static void show_hash_info(HashState *hashstate, ExplainState *es); static void show_tidbitmap_info(BitmapHeapScanState *planstate, @@ -1436,6 +1442,8 @@ ExplainNode(PlanState *planstate, List *ancestors, break; case T_Sort: show_sort_keys((SortState *) planstate, ancestors, es); + if (es->verbose) + show_sort_order((SortState *)planstate, es); show_sort_info((SortState *) planstate, es); break; case T_MergeAppend: @@ -1879,7 +1887,79 @@ show_sort_group_keys(PlanState *planstate, const char *qlabel, ExplainPropertyList(qlabel, result, es); } +/* + * In verbose mode, additional information about the collation, sort order + * and NULLS FIRST/LAST is printed + */ +static void +show_sort_order(SortState *sortstate, ExplainState *es) +{ + Sort *plan = (Sort *) sortstate->ss.ps.plan; + Plan *planstatePlan = (Plan *) sortstate->ss.ps.plan; + + int nkeys = plan->numCols; + AttrNumber *keycols = plan->sortColIdx; + int keyno; + + Oid sortcoltype; + TypeCacheEntry *typentry; + + HeapTuple opertup; + Form_pg_operator operform; + char *oprname; + + if (nkeys <= 0) + return; + + appendStringInfoSpaces(es->str, es->indent * 2); + appendStringInfoString(es->str, "Sort Order:"); + + for (keyno = 0; keyno < nkeys; keyno++) + { + Oid collId = plan->collations[keyno]; + Oid operId = plan->sortOperators[keyno]; + + AttrNumber keyresno = keycols[keyno]; + TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, + keyresno); + + sortcoltype = exprType(target->expr); + typentry = lookup_type_cache(sortcoltype, + TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); + if (keyno!=0) + appendStringInfoString(es->str, ","); + + if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) + { + char *collname = get_collation_name(collId); + char *localeptr = setlocale(LC_COLLATE, NULL); + appendStringInfo(es->str, " COLLATE \"%s\"", collname); + /* for those who use COLLATE although their default is already + * the wanted */ + if (strcmp(collname, localeptr) == 0) + appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); + } + /* print verbose information, also defaults like ASC NULLS LAST*/ + if (operId == typentry->lt_opr) + appendStringInfoString(es->str, " ASC"); + else if (operId == typentry->gt_opr) + appendStringInfoString(es->str, " DESC"); + else + { + opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); + operform = (Form_pg_operator) GETSTRUCT (opertup); + oprname = NameStr(operform->oprname); + appendStringInfo(es->str, " USING %s", oprname); + ReleaseSysCache(opertup); + } + if (plan->nullsFirst[keyno]) + appendStringInfoString(es->str, " NULLS FIRST"); + else + appendStringInfoString(es->str, " NULLS LAST"); + } + appendStringInfoChar(es->str, '\n'); +} /* * If it's EXPLAIN ANALYZE, show tuplesort stats for a sort node */ diff --git a/src/test/regress/expected/explain_sortorder.out b/src/test/regress/expected/explain_sortorder.out new file mode 100644 index 0000000..ed39b51 --- /dev/null +++ b/src/test/regress/expected/explain_sortorder.out @@ -0,0 +1,19 @@ +-- +-- Test explain feature: sort order +-- +CREATE TABLE sortordertest (n1 char(1), n2 int4); +-- Insert values by which should be ordered +INSERT INTO sortordertest(n1, n2) VALUES ('d', 5), ('b', 3), ('a', 1), ('e', 2), ('c', 4); +-- Display sort order when explain analyze and verbose are true. +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM sortordertest ORDER BY n1 COLLATE "C" DESC, n2; + QUERY PLAN +------------------------------------------------------------ + Sort + Output: n1, n2, ((n1)::character(1)) + Sort Key: sortordertest.n1, sortordertest.n2 + Sort Order: COLLATE "C" DESC NULLS FIRST, ASC NULLS LAST + -> Seq Scan on public.sortordertest + Output: n1, n2, n1 +(6 rows) + +DROP TABLE sortordertest; diff --git a/src/test/regress/expected/inherit.out b/src/test/regress/expected/inherit.out index 56e2c99..9492066 100644 --- a/src/test/regress/expected/inherit.out +++ b/src/test/regress/expected/inherit.out @@ -1187,6 +1187,7 @@ explain (verbose, costs off) select * from matest0 order by 1-id; Sort Output: matest0.id, matest0.name, ((1 - matest0.id)) Sort Key: ((1 - matest0.id)) + Sort Order: ASC NULLS LAST -> Result Output: matest0.id, matest0.name, (1 - matest0.id) -> Append @@ -1198,7 +1199,7 @@ explain (verbose, costs off) select * from matest0 order by 1-id; Output: matest2.id, matest2.name -> Seq Scan on public.matest3 Output: matest3.id, matest3.name -(14 rows) +(15 rows) select * from matest0 order by 1-id; id | name @@ -1247,11 +1248,12 @@ explain (verbose, costs off) select * from matest0 order by 1-id; -> Sort Output: matest2.id, matest2.name, ((1 - matest2.id)) Sort Key: ((1 - matest2.id)) + Sort Order: ASC NULLS LAST -> Seq Scan on public.matest2 Output: matest2.id, matest2.name, (1 - matest2.id) -> Index Scan using matest3i on public.matest3 Output: matest3.id, matest3.name, (1 - matest3.id) -(13 rows) +(14 rows) select * from matest0 order by 1-id; id | name @@ -1285,6 +1287,7 @@ explain (verbose, costs off) select min(1-id) from matest0; -> Sort Output: matest2.id, ((1 - matest2.id)) Sort Key: ((1 - matest2.id)) + Sort Order: ASC NULLS LAST -> Bitmap Heap Scan on public.matest2 Output: matest2.id, (1 - matest2.id) Filter: ((1 - matest2.id) IS NOT NULL) @@ -1292,7 +1295,7 @@ explain (verbose, costs off) select min(1-id) from matest0; -> Index Scan using matest3i on public.matest3 Output: matest3.id, (1 - matest3.id) Index Cond: ((1 - matest3.id) IS NOT NULL) -(25 rows) +(26 rows) select min(1-id) from matest0; min diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index d4f02e5..7d12852 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -59,7 +59,7 @@ test: create_index create_view # ---------- # Another group of parallel tests # ---------- -test: create_aggregate create_function_3 create_cast constraints triggers inherit create_table_like typed_table vacuum drop_if_exists updatable_views +test: create_aggregate create_function_3 create_cast constraints triggers inherit create_table_like typed_table vacuum drop_if_exists updatable_views explain_sortorder # ---------- # sanity_check does a vacuum, affecting the sort order of SELECT * diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule index 611b0a8..bbca2c6 100644 --- a/src/test/regress/serial_schedule +++ b/src/test/regress/serial_schedule @@ -71,6 +71,7 @@ test: typed_table test: vacuum test: drop_if_exists test: updatable_views +test: explain_sortorder test: sanity_check test: errors test: select diff --git a/src/test/regress/sql/explain_sortorder.sql b/src/test/regress/sql/explain_sortorder.sql new file mode 100644 index 0000000..2600316 --- /dev/null +++ b/src/test/regress/sql/explain_sortorder.sql @@ -0,0 +1,12 @@ +-- +-- Test explain feature: sort order +-- +CREATE TABLE sortordertest (n1 char(1), n2 int4); + +-- Insert values by which should be ordered +INSERT INTO sortordertest(n1, n2) VALUES ('d', 5), ('b', 3), ('a', 1), ('e', 2), ('c', 4); + +-- Display sort order when explain analyze and verbose are true. +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM sortordertest ORDER BY n1 COLLATE "C" DESC, n2; + +DROP TABLE sortordertest; -- 1.9.1 From f144abdf5e529ae131927fee1f0865f5288512fa Mon Sep 17 00:00:00 2001 From: mtimm_01 <mtimm_01@uni-muenster.de> Date: Thu, 20 Nov 2014 12:55:30 +0100 Subject: [PATCH 2/3] Included Testline --- src/backend/commands/explain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index c1be1ef..3dc402d 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1937,6 +1937,7 @@ show_sort_order(SortState *sortstate, ExplainState *es) appendStringInfo(es->str, " COLLATE \"%s\"", collname); /* for those who use COLLATE although their default is already * the wanted */ + /* This is a testline made by mtimm_01 */ if (strcmp(collname, localeptr) == 0) appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); } -- 1.9.1 From 3b2fdc73b7034511e59d57671ed37429c5b62cca Mon Sep 17 00:00:00 2001 From: mtimm_01 <mtimm_01@uni-muenster.de> Date: Thu, 20 Nov 2014 18:27:16 +0100 Subject: [PATCH 3/3] Output now in correct format --- src/backend/commands/explain.c | 115 +++++++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 50 deletions(-) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 3dc402d..1874979 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1908,58 +1908,73 @@ show_sort_order(SortState *sortstate, ExplainState *es) Form_pg_operator operform; char *oprname; + List *elements = NIL; + if (nkeys <= 0) + { return; - - appendStringInfoSpaces(es->str, es->indent * 2); - appendStringInfoString(es->str, "Sort Order:"); - - for (keyno = 0; keyno < nkeys; keyno++) - { - Oid collId = plan->collations[keyno]; - Oid operId = plan->sortOperators[keyno]; - - AttrNumber keyresno = keycols[keyno]; - TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, - keyresno); - - sortcoltype = exprType(target->expr); - typentry = lookup_type_cache(sortcoltype, - TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); - - if (keyno!=0) - appendStringInfoString(es->str, ","); - - if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) - { - char *collname = get_collation_name(collId); - char *localeptr = setlocale(LC_COLLATE, NULL); - appendStringInfo(es->str, " COLLATE \"%s\"", collname); - /* for those who use COLLATE although their default is already - * the wanted */ - /* This is a testline made by mtimm_01 */ - if (strcmp(collname, localeptr) == 0) - appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); - } - /* print verbose information, also defaults like ASC NULLS LAST*/ - if (operId == typentry->lt_opr) - appendStringInfoString(es->str, " ASC"); - else if (operId == typentry->gt_opr) - appendStringInfoString(es->str, " DESC"); - else - { - opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); - operform = (Form_pg_operator) GETSTRUCT (opertup); - oprname = NameStr(operform->oprname); - appendStringInfo(es->str, " USING %s", oprname); - ReleaseSysCache(opertup); - } - if (plan->nullsFirst[keyno]) - appendStringInfoString(es->str, " NULLS FIRST"); - else - appendStringInfoString(es->str, " NULLS LAST"); - } - appendStringInfoChar(es->str, '\n'); + } + + for (keyno = 0; keyno < nkeys; keyno++) + { + char sort_order_value[200] = ""; + Oid collId = plan->collations[keyno]; + Oid operId = plan->sortOperators[keyno]; + + AttrNumber keyresno = keycols[keyno]; + TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, + keyresno); + + sortcoltype = exprType(target->expr); + typentry = lookup_type_cache(sortcoltype, + TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); + + if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) + { + char *collname = get_collation_name(collId); + char *localeptr = setlocale(LC_COLLATE, NULL); + strcat(sort_order_value, "COLLATE \""); + strcat(sort_order_value, collname); + strcat(sort_order_value, "\""); + /* for those who use COLLATE although their default is already + * the wanted */ + if (strcmp(collname, localeptr) == 0) + { + strcat(sort_order_value, " ("); + strcat(sort_order_value, collname); + strcat(sort_order_value, " is LC_COLLATE)"); + } + } + /* print verbose information, also defaults like ASC NULLS LAST*/ + if (operId == typentry->lt_opr) + { + strcat(sort_order_value, " ASC"); + } + else if (operId == typentry->gt_opr) + { + strcat(sort_order_value, " DESC"); + } + else + { + opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); + operform = (Form_pg_operator) GETSTRUCT (opertup); + oprname = NameStr(operform->oprname); + strcat(sort_order_value, " USING "); + strcat(sort_order_value, oprname); + ReleaseSysCache(opertup); + } + if (plan->nullsFirst[keyno]) + { + strcat(sort_order_value, " NULLS FIRST"); + } + else + { + strcat(sort_order_value, " NULLS LAST"); + } + elements = lappend(elements, sort_order_value); + } + + ExplainPropertyList("Sort Order", elements, es); } /* * If it's EXPLAIN ANALYZE, show tuplesort stats for a sort node -- 1.9.1
2014-11-25 11:35:36 mtimm_01 explain sortorder Delete Comment Patch: Initial version. (Message-ID: a864cfd1974d1fdf4f888434e963403782dca490)
2014-11-25 11:34:13 mtimm_01 explain sortorder New Comment Patch: From a864cfd1974d1fdf4f888434e963403782dca490 Mon Sep 17 00:00:00 2001 From: Arne Scheffer <scheffa@uni-muenster.de> Date: Sun, 9 Nov 2014 18:21:18 +0100 Subject: [PATCH 1/3] explain sortorder Display sort order options in VERBOSE mode of EXPLAIN For creating indexes on more than one column, it is useful to know the sort order of each sort key. So now, if you run EXPLAIN in VERBOSE mode, you get the sort order information in the order the sort keys are displayed. Signed-off-by: Marius Timmer <mtimm_01@uni-muenster.de> --- src/backend/commands/explain.c | 80 +++++++++++++++++++++++++ src/test/regress/expected/explain_sortorder.out | 19 ++++++ src/test/regress/expected/inherit.out | 9 ++- src/test/regress/parallel_schedule | 2 +- src/test/regress/serial_schedule | 1 + src/test/regress/sql/explain_sortorder.sql | 12 ++++ 6 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 src/test/regress/expected/explain_sortorder.out create mode 100644 src/test/regress/sql/explain_sortorder.sql diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 99aa0f0..c1be1ef 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -14,6 +14,9 @@ #include "postgres.h" #include "access/xact.h" +#include "access/htup_details.h" +#include "catalog/pg_collation.h" +#include "catalog/pg_operator.h" #include "catalog/pg_type.h" #include "commands/createas.h" #include "commands/defrem.h" @@ -30,7 +33,9 @@ #include "utils/rel.h" #include "utils/ruleutils.h" #include "utils/snapmgr.h" +#include "utils/syscache.h" #include "utils/tuplesort.h" +#include "utils/typcache.h" #include "utils/xml.h" @@ -84,6 +89,7 @@ static void show_group_keys(GroupState *gstate, List *ancestors, static void show_sort_group_keys(PlanState *planstate, const char *qlabel, int nkeys, AttrNumber *keycols, List *ancestors, ExplainState *es); +static void show_sort_order(SortState *sortstate, ExplainState *es); static void show_sort_info(SortState *sortstate, ExplainState *es); static void show_hash_info(HashState *hashstate, ExplainState *es); static void show_tidbitmap_info(BitmapHeapScanState *planstate, @@ -1436,6 +1442,8 @@ ExplainNode(PlanState *planstate, List *ancestors, break; case T_Sort: show_sort_keys((SortState *) planstate, ancestors, es); + if (es->verbose) + show_sort_order((SortState *)planstate, es); show_sort_info((SortState *) planstate, es); break; case T_MergeAppend: @@ -1879,7 +1887,79 @@ show_sort_group_keys(PlanState *planstate, const char *qlabel, ExplainPropertyList(qlabel, result, es); } +/* + * In verbose mode, additional information about the collation, sort order + * and NULLS FIRST/LAST is printed + */ +static void +show_sort_order(SortState *sortstate, ExplainState *es) +{ + Sort *plan = (Sort *) sortstate->ss.ps.plan; + Plan *planstatePlan = (Plan *) sortstate->ss.ps.plan; + + int nkeys = plan->numCols; + AttrNumber *keycols = plan->sortColIdx; + int keyno; + + Oid sortcoltype; + TypeCacheEntry *typentry; + + HeapTuple opertup; + Form_pg_operator operform; + char *oprname; + + if (nkeys <= 0) + return; + + appendStringInfoSpaces(es->str, es->indent * 2); + appendStringInfoString(es->str, "Sort Order:"); + + for (keyno = 0; keyno < nkeys; keyno++) + { + Oid collId = plan->collations[keyno]; + Oid operId = plan->sortOperators[keyno]; + + AttrNumber keyresno = keycols[keyno]; + TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, + keyresno); + + sortcoltype = exprType(target->expr); + typentry = lookup_type_cache(sortcoltype, + TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); + if (keyno!=0) + appendStringInfoString(es->str, ","); + + if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) + { + char *collname = get_collation_name(collId); + char *localeptr = setlocale(LC_COLLATE, NULL); + appendStringInfo(es->str, " COLLATE \"%s\"", collname); + /* for those who use COLLATE although their default is already + * the wanted */ + if (strcmp(collname, localeptr) == 0) + appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); + } + /* print verbose information, also defaults like ASC NULLS LAST*/ + if (operId == typentry->lt_opr) + appendStringInfoString(es->str, " ASC"); + else if (operId == typentry->gt_opr) + appendStringInfoString(es->str, " DESC"); + else + { + opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); + operform = (Form_pg_operator) GETSTRUCT (opertup); + oprname = NameStr(operform->oprname); + appendStringInfo(es->str, " USING %s", oprname); + ReleaseSysCache(opertup); + } + if (plan->nullsFirst[keyno]) + appendStringInfoString(es->str, " NULLS FIRST"); + else + appendStringInfoString(es->str, " NULLS LAST"); + } + appendStringInfoChar(es->str, '\n'); +} /* * If it's EXPLAIN ANALYZE, show tuplesort stats for a sort node */ diff --git a/src/test/regress/expected/explain_sortorder.out b/src/test/regress/expected/explain_sortorder.out new file mode 100644 index 0000000..ed39b51 --- /dev/null +++ b/src/test/regress/expected/explain_sortorder.out @@ -0,0 +1,19 @@ +-- +-- Test explain feature: sort order +-- +CREATE TABLE sortordertest (n1 char(1), n2 int4); +-- Insert values by which should be ordered +INSERT INTO sortordertest(n1, n2) VALUES ('d', 5), ('b', 3), ('a', 1), ('e', 2), ('c', 4); +-- Display sort order when explain analyze and verbose are true. +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM sortordertest ORDER BY n1 COLLATE "C" DESC, n2; + QUERY PLAN +------------------------------------------------------------ + Sort + Output: n1, n2, ((n1)::character(1)) + Sort Key: sortordertest.n1, sortordertest.n2 + Sort Order: COLLATE "C" DESC NULLS FIRST, ASC NULLS LAST + -> Seq Scan on public.sortordertest + Output: n1, n2, n1 +(6 rows) + +DROP TABLE sortordertest; diff --git a/src/test/regress/expected/inherit.out b/src/test/regress/expected/inherit.out index 56e2c99..9492066 100644 --- a/src/test/regress/expected/inherit.out +++ b/src/test/regress/expected/inherit.out @@ -1187,6 +1187,7 @@ explain (verbose, costs off) select * from matest0 order by 1-id; Sort Output: matest0.id, matest0.name, ((1 - matest0.id)) Sort Key: ((1 - matest0.id)) + Sort Order: ASC NULLS LAST -> Result Output: matest0.id, matest0.name, (1 - matest0.id) -> Append @@ -1198,7 +1199,7 @@ explain (verbose, costs off) select * from matest0 order by 1-id; Output: matest2.id, matest2.name -> Seq Scan on public.matest3 Output: matest3.id, matest3.name -(14 rows) +(15 rows) select * from matest0 order by 1-id; id | name @@ -1247,11 +1248,12 @@ explain (verbose, costs off) select * from matest0 order by 1-id; -> Sort Output: matest2.id, matest2.name, ((1 - matest2.id)) Sort Key: ((1 - matest2.id)) + Sort Order: ASC NULLS LAST -> Seq Scan on public.matest2 Output: matest2.id, matest2.name, (1 - matest2.id) -> Index Scan using matest3i on public.matest3 Output: matest3.id, matest3.name, (1 - matest3.id) -(13 rows) +(14 rows) select * from matest0 order by 1-id; id | name @@ -1285,6 +1287,7 @@ explain (verbose, costs off) select min(1-id) from matest0; -> Sort Output: matest2.id, ((1 - matest2.id)) Sort Key: ((1 - matest2.id)) + Sort Order: ASC NULLS LAST -> Bitmap Heap Scan on public.matest2 Output: matest2.id, (1 - matest2.id) Filter: ((1 - matest2.id) IS NOT NULL) @@ -1292,7 +1295,7 @@ explain (verbose, costs off) select min(1-id) from matest0; -> Index Scan using matest3i on public.matest3 Output: matest3.id, (1 - matest3.id) Index Cond: ((1 - matest3.id) IS NOT NULL) -(25 rows) +(26 rows) select min(1-id) from matest0; min diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index d4f02e5..7d12852 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -59,7 +59,7 @@ test: create_index create_view # ---------- # Another group of parallel tests # ---------- -test: create_aggregate create_function_3 create_cast constraints triggers inherit create_table_like typed_table vacuum drop_if_exists updatable_views +test: create_aggregate create_function_3 create_cast constraints triggers inherit create_table_like typed_table vacuum drop_if_exists updatable_views explain_sortorder # ---------- # sanity_check does a vacuum, affecting the sort order of SELECT * diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule index 611b0a8..bbca2c6 100644 --- a/src/test/regress/serial_schedule +++ b/src/test/regress/serial_schedule @@ -71,6 +71,7 @@ test: typed_table test: vacuum test: drop_if_exists test: updatable_views +test: explain_sortorder test: sanity_check test: errors test: select diff --git a/src/test/regress/sql/explain_sortorder.sql b/src/test/regress/sql/explain_sortorder.sql new file mode 100644 index 0000000..2600316 --- /dev/null +++ b/src/test/regress/sql/explain_sortorder.sql @@ -0,0 +1,12 @@ +-- +-- Test explain feature: sort order +-- +CREATE TABLE sortordertest (n1 char(1), n2 int4); + +-- Insert values by which should be ordered +INSERT INTO sortordertest(n1, n2) VALUES ('d', 5), ('b', 3), ('a', 1), ('e', 2), ('c', 4); + +-- Display sort order when explain analyze and verbose are true. +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM sortordertest ORDER BY n1 COLLATE "C" DESC, n2; + +DROP TABLE sortordertest; -- 1.9.1 From f144abdf5e529ae131927fee1f0865f5288512fa Mon Sep 17 00:00:00 2001 From: mtimm_01 <mtimm_01@uni-muenster.de> Date: Thu, 20 Nov 2014 12:55:30 +0100 Subject: [PATCH 2/3] Included Testline --- src/backend/commands/explain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index c1be1ef..3dc402d 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1937,6 +1937,7 @@ show_sort_order(SortState *sortstate, ExplainState *es) appendStringInfo(es->str, " COLLATE \"%s\"", collname); /* for those who use COLLATE although their default is already * the wanted */ + /* This is a testline made by mtimm_01 */ if (strcmp(collname, localeptr) == 0) appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); } -- 1.9.1 From 3b2fdc73b7034511e59d57671ed37429c5b62cca Mon Sep 17 00:00:00 2001 From: mtimm_01 <mtimm_01@uni-muenster.de> Date: Thu, 20 Nov 2014 18:27:16 +0100 Subject: [PATCH 3/3] Output now in correct format --- src/backend/commands/explain.c | 115 +++++++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 50 deletions(-) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 3dc402d..1874979 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1908,58 +1908,73 @@ show_sort_order(SortState *sortstate, ExplainState *es) Form_pg_operator operform; char *oprname; + List *elements = NIL; + if (nkeys <= 0) + { return; - - appendStringInfoSpaces(es->str, es->indent * 2); - appendStringInfoString(es->str, "Sort Order:"); - - for (keyno = 0; keyno < nkeys; keyno++) - { - Oid collId = plan->collations[keyno]; - Oid operId = plan->sortOperators[keyno]; - - AttrNumber keyresno = keycols[keyno]; - TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, - keyresno); - - sortcoltype = exprType(target->expr); - typentry = lookup_type_cache(sortcoltype, - TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); - - if (keyno!=0) - appendStringInfoString(es->str, ","); - - if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) - { - char *collname = get_collation_name(collId); - char *localeptr = setlocale(LC_COLLATE, NULL); - appendStringInfo(es->str, " COLLATE \"%s\"", collname); - /* for those who use COLLATE although their default is already - * the wanted */ - /* This is a testline made by mtimm_01 */ - if (strcmp(collname, localeptr) == 0) - appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); - } - /* print verbose information, also defaults like ASC NULLS LAST*/ - if (operId == typentry->lt_opr) - appendStringInfoString(es->str, " ASC"); - else if (operId == typentry->gt_opr) - appendStringInfoString(es->str, " DESC"); - else - { - opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); - operform = (Form_pg_operator) GETSTRUCT (opertup); - oprname = NameStr(operform->oprname); - appendStringInfo(es->str, " USING %s", oprname); - ReleaseSysCache(opertup); - } - if (plan->nullsFirst[keyno]) - appendStringInfoString(es->str, " NULLS FIRST"); - else - appendStringInfoString(es->str, " NULLS LAST"); - } - appendStringInfoChar(es->str, '\n'); + } + + for (keyno = 0; keyno < nkeys; keyno++) + { + char sort_order_value[200] = ""; + Oid collId = plan->collations[keyno]; + Oid operId = plan->sortOperators[keyno]; + + AttrNumber keyresno = keycols[keyno]; + TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, + keyresno); + + sortcoltype = exprType(target->expr); + typentry = lookup_type_cache(sortcoltype, + TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); + + if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) + { + char *collname = get_collation_name(collId); + char *localeptr = setlocale(LC_COLLATE, NULL); + strcat(sort_order_value, "COLLATE \""); + strcat(sort_order_value, collname); + strcat(sort_order_value, "\""); + /* for those who use COLLATE although their default is already + * the wanted */ + if (strcmp(collname, localeptr) == 0) + { + strcat(sort_order_value, " ("); + strcat(sort_order_value, collname); + strcat(sort_order_value, " is LC_COLLATE)"); + } + } + /* print verbose information, also defaults like ASC NULLS LAST*/ + if (operId == typentry->lt_opr) + { + strcat(sort_order_value, " ASC"); + } + else if (operId == typentry->gt_opr) + { + strcat(sort_order_value, " DESC"); + } + else + { + opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); + operform = (Form_pg_operator) GETSTRUCT (opertup); + oprname = NameStr(operform->oprname); + strcat(sort_order_value, " USING "); + strcat(sort_order_value, oprname); + ReleaseSysCache(opertup); + } + if (plan->nullsFirst[keyno]) + { + strcat(sort_order_value, " NULLS FIRST"); + } + else + { + strcat(sort_order_value, " NULLS LAST"); + } + elements = lappend(elements, sort_order_value); + } + + ExplainPropertyList("Sort Order", elements, es); } /* * If it's EXPLAIN ANALYZE, show tuplesort stats for a sort node -- 1.9.1
2014-11-25 11:33:47 mtimm_01 explain sortorder New Comment Comment: Hello everyone, For creating indexes on more than one column, it is useful to know the sort order of each sort key. So now, if you run EXPLAIN in VERBOSE mode, you get the sort order information in the order the sort keys are displayed - Lukas - This patch is meant for discussion - It’s against the master branch - The patch compiles successfully and one test (inherit) is affected - There are no platform-specific items in this patch - The patch, as described, enhances EXPLAIN VERBOSE. For an example, see the regression test - There is no TODO item referring to this patch @patchname: explain_sortorder v2 @version: 2.01 @author: Marius Timmer <mtimm_01@uni-muenster.de>, Arne Scheffer <arne.scheffer@uni-muenster.de>, Lukas Kreft <lukaskreft@uni-muenster.de> @description: Display sort order options in VERBOSE mode of EXPLAIN - The situation Currently I am able to run a EXPLAIN-Statement (verbose) for getting more Information about a Query. But it is not enough to check in which order the results will be sorted, what could be interesting to modify some Statements so they can become more performant. - What this patch does This patch will add one more information to the result of an EXPLAIN- Statement in verbose-mode. You will find the new property "Sort order" which tells you the order of the used keys while sorting. You can use it in all available Formats.
2014-11-25 11:33:20 mtimm_01 explain sortorder Delete Comment Patch: From a864cfd1974d1fdf4f888434e963403782dca490 Mon Sep 17 00:00:00 2001 From: Arne Scheffer <scheffa@uni-muenster.de> Date: Sun, 9 Nov 2014 18:21:18 +0100 Subject: [PATCH 1/3] explain sortorder Display sort order options in VERBOSE mode of EXPLAIN For creating indexes on more than one column, it is useful to know the sort order of each sort key. So now, if you run EXPLAIN in VERBOSE mode, you get the sort order information in the order the sort keys are displayed. Signed-off-by: Marius Timmer <mtimm_01@uni-muenster.de> --- src/backend/commands/explain.c | 80 +++++++++++++++++++++++++ src/test/regress/expected/explain_sortorder.out | 19 ++++++ src/test/regress/expected/inherit.out | 9 ++- src/test/regress/parallel_schedule | 2 +- src/test/regress/serial_schedule | 1 + src/test/regress/sql/explain_sortorder.sql | 12 ++++ 6 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 src/test/regress/expected/explain_sortorder.out create mode 100644 src/test/regress/sql/explain_sortorder.sql diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 99aa0f0..c1be1ef 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -14,6 +14,9 @@ #include "postgres.h" #include "access/xact.h" +#include "access/htup_details.h" +#include "catalog/pg_collation.h" +#include "catalog/pg_operator.h" #include "catalog/pg_type.h" #include "commands/createas.h" #include "commands/defrem.h" @@ -30,7 +33,9 @@ #include "utils/rel.h" #include "utils/ruleutils.h" #include "utils/snapmgr.h" +#include "utils/syscache.h" #include "utils/tuplesort.h" +#include "utils/typcache.h" #include "utils/xml.h" @@ -84,6 +89,7 @@ static void show_group_keys(GroupState *gstate, List *ancestors, static void show_sort_group_keys(PlanState *planstate, const char *qlabel, int nkeys, AttrNumber *keycols, List *ancestors, ExplainState *es); +static void show_sort_order(SortState *sortstate, ExplainState *es); static void show_sort_info(SortState *sortstate, ExplainState *es); static void show_hash_info(HashState *hashstate, ExplainState *es); static void show_tidbitmap_info(BitmapHeapScanState *planstate, @@ -1436,6 +1442,8 @@ ExplainNode(PlanState *planstate, List *ancestors, break; case T_Sort: show_sort_keys((SortState *) planstate, ancestors, es); + if (es->verbose) + show_sort_order((SortState *)planstate, es); show_sort_info((SortState *) planstate, es); break; case T_MergeAppend: @@ -1879,7 +1887,79 @@ show_sort_group_keys(PlanState *planstate, const char *qlabel, ExplainPropertyList(qlabel, result, es); } +/* + * In verbose mode, additional information about the collation, sort order + * and NULLS FIRST/LAST is printed + */ +static void +show_sort_order(SortState *sortstate, ExplainState *es) +{ + Sort *plan = (Sort *) sortstate->ss.ps.plan; + Plan *planstatePlan = (Plan *) sortstate->ss.ps.plan; + + int nkeys = plan->numCols; + AttrNumber *keycols = plan->sortColIdx; + int keyno; + + Oid sortcoltype; + TypeCacheEntry *typentry; + + HeapTuple opertup; + Form_pg_operator operform; + char *oprname; + + if (nkeys <= 0) + return; + + appendStringInfoSpaces(es->str, es->indent * 2); + appendStringInfoString(es->str, "Sort Order:"); + + for (keyno = 0; keyno < nkeys; keyno++) + { + Oid collId = plan->collations[keyno]; + Oid operId = plan->sortOperators[keyno]; + + AttrNumber keyresno = keycols[keyno]; + TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, + keyresno); + + sortcoltype = exprType(target->expr); + typentry = lookup_type_cache(sortcoltype, + TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); + if (keyno!=0) + appendStringInfoString(es->str, ","); + + if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) + { + char *collname = get_collation_name(collId); + char *localeptr = setlocale(LC_COLLATE, NULL); + appendStringInfo(es->str, " COLLATE \"%s\"", collname); + /* for those who use COLLATE although their default is already + * the wanted */ + if (strcmp(collname, localeptr) == 0) + appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); + } + /* print verbose information, also defaults like ASC NULLS LAST*/ + if (operId == typentry->lt_opr) + appendStringInfoString(es->str, " ASC"); + else if (operId == typentry->gt_opr) + appendStringInfoString(es->str, " DESC"); + else + { + opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); + operform = (Form_pg_operator) GETSTRUCT (opertup); + oprname = NameStr(operform->oprname); + appendStringInfo(es->str, " USING %s", oprname); + ReleaseSysCache(opertup); + } + if (plan->nullsFirst[keyno]) + appendStringInfoString(es->str, " NULLS FIRST"); + else + appendStringInfoString(es->str, " NULLS LAST"); + } + appendStringInfoChar(es->str, '\n'); +} /* * If it's EXPLAIN ANALYZE, show tuplesort stats for a sort node */ diff --git a/src/test/regress/expected/explain_sortorder.out b/src/test/regress/expected/explain_sortorder.out new file mode 100644 index 0000000..ed39b51 --- /dev/null +++ b/src/test/regress/expected/explain_sortorder.out @@ -0,0 +1,19 @@ +-- +-- Test explain feature: sort order +-- +CREATE TABLE sortordertest (n1 char(1), n2 int4); +-- Insert values by which should be ordered +INSERT INTO sortordertest(n1, n2) VALUES ('d', 5), ('b', 3), ('a', 1), ('e', 2), ('c', 4); +-- Display sort order when explain analyze and verbose are true. +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM sortordertest ORDER BY n1 COLLATE "C" DESC, n2; + QUERY PLAN +------------------------------------------------------------ + Sort + Output: n1, n2, ((n1)::character(1)) + Sort Key: sortordertest.n1, sortordertest.n2 + Sort Order: COLLATE "C" DESC NULLS FIRST, ASC NULLS LAST + -> Seq Scan on public.sortordertest + Output: n1, n2, n1 +(6 rows) + +DROP TABLE sortordertest; diff --git a/src/test/regress/expected/inherit.out b/src/test/regress/expected/inherit.out index 56e2c99..9492066 100644 --- a/src/test/regress/expected/inherit.out +++ b/src/test/regress/expected/inherit.out @@ -1187,6 +1187,7 @@ explain (verbose, costs off) select * from matest0 order by 1-id; Sort Output: matest0.id, matest0.name, ((1 - matest0.id)) Sort Key: ((1 - matest0.id)) + Sort Order: ASC NULLS LAST -> Result Output: matest0.id, matest0.name, (1 - matest0.id) -> Append @@ -1198,7 +1199,7 @@ explain (verbose, costs off) select * from matest0 order by 1-id; Output: matest2.id, matest2.name -> Seq Scan on public.matest3 Output: matest3.id, matest3.name -(14 rows) +(15 rows) select * from matest0 order by 1-id; id | name @@ -1247,11 +1248,12 @@ explain (verbose, costs off) select * from matest0 order by 1-id; -> Sort Output: matest2.id, matest2.name, ((1 - matest2.id)) Sort Key: ((1 - matest2.id)) + Sort Order: ASC NULLS LAST -> Seq Scan on public.matest2 Output: matest2.id, matest2.name, (1 - matest2.id) -> Index Scan using matest3i on public.matest3 Output: matest3.id, matest3.name, (1 - matest3.id) -(13 rows) +(14 rows) select * from matest0 order by 1-id; id | name @@ -1285,6 +1287,7 @@ explain (verbose, costs off) select min(1-id) from matest0; -> Sort Output: matest2.id, ((1 - matest2.id)) Sort Key: ((1 - matest2.id)) + Sort Order: ASC NULLS LAST -> Bitmap Heap Scan on public.matest2 Output: matest2.id, (1 - matest2.id) Filter: ((1 - matest2.id) IS NOT NULL) @@ -1292,7 +1295,7 @@ explain (verbose, costs off) select min(1-id) from matest0; -> Index Scan using matest3i on public.matest3 Output: matest3.id, (1 - matest3.id) Index Cond: ((1 - matest3.id) IS NOT NULL) -(25 rows) +(26 rows) select min(1-id) from matest0; min diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index d4f02e5..7d12852 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -59,7 +59,7 @@ test: create_index create_view # ---------- # Another group of parallel tests # ---------- -test: create_aggregate create_function_3 create_cast constraints triggers inherit create_table_like typed_table vacuum drop_if_exists updatable_views +test: create_aggregate create_function_3 create_cast constraints triggers inherit create_table_like typed_table vacuum drop_if_exists updatable_views explain_sortorder # ---------- # sanity_check does a vacuum, affecting the sort order of SELECT * diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule index 611b0a8..bbca2c6 100644 --- a/src/test/regress/serial_schedule +++ b/src/test/regress/serial_schedule @@ -71,6 +71,7 @@ test: typed_table test: vacuum test: drop_if_exists test: updatable_views +test: explain_sortorder test: sanity_check test: errors test: select diff --git a/src/test/regress/sql/explain_sortorder.sql b/src/test/regress/sql/explain_sortorder.sql new file mode 100644 index 0000000..2600316 --- /dev/null +++ b/src/test/regress/sql/explain_sortorder.sql @@ -0,0 +1,12 @@ +-- +-- Test explain feature: sort order +-- +CREATE TABLE sortordertest (n1 char(1), n2 int4); + +-- Insert values by which should be ordered +INSERT INTO sortordertest(n1, n2) VALUES ('d', 5), ('b', 3), ('a', 1), ('e', 2), ('c', 4); + +-- Display sort order when explain analyze and verbose are true. +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM sortordertest ORDER BY n1 COLLATE "C" DESC, n2; + +DROP TABLE sortordertest; -- 1.9.1 From f144abdf5e529ae131927fee1f0865f5288512fa Mon Sep 17 00:00:00 2001 From: mtimm_01 <mtimm_01@uni-muenster.de> Date: Thu, 20 Nov 2014 12:55:30 +0100 Subject: [PATCH 2/3] Included Testline --- src/backend/commands/explain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index c1be1ef..3dc402d 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1937,6 +1937,7 @@ show_sort_order(SortState *sortstate, ExplainState *es) appendStringInfo(es->str, " COLLATE \"%s\"", collname); /* for those who use COLLATE although their default is already * the wanted */ + /* This is a testline made by mtimm_01 */ if (strcmp(collname, localeptr) == 0) appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); } -- 1.9.1 From 3b2fdc73b7034511e59d57671ed37429c5b62cca Mon Sep 17 00:00:00 2001 From: mtimm_01 <mtimm_01@uni-muenster.de> Date: Thu, 20 Nov 2014 18:27:16 +0100 Subject: [PATCH 3/3] Output now in correct format --- src/backend/commands/explain.c | 115 +++++++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 50 deletions(-) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 3dc402d..1874979 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1908,58 +1908,73 @@ show_sort_order(SortState *sortstate, ExplainState *es) Form_pg_operator operform; char *oprname; + List *elements = NIL; + if (nkeys <= 0) + { return; - - appendStringInfoSpaces(es->str, es->indent * 2); - appendStringInfoString(es->str, "Sort Order:"); - - for (keyno = 0; keyno < nkeys; keyno++) - { - Oid collId = plan->collations[keyno]; - Oid operId = plan->sortOperators[keyno]; - - AttrNumber keyresno = keycols[keyno]; - TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, - keyresno); - - sortcoltype = exprType(target->expr); - typentry = lookup_type_cache(sortcoltype, - TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); - - if (keyno!=0) - appendStringInfoString(es->str, ","); - - if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) - { - char *collname = get_collation_name(collId); - char *localeptr = setlocale(LC_COLLATE, NULL); - appendStringInfo(es->str, " COLLATE \"%s\"", collname); - /* for those who use COLLATE although their default is already - * the wanted */ - /* This is a testline made by mtimm_01 */ - if (strcmp(collname, localeptr) == 0) - appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); - } - /* print verbose information, also defaults like ASC NULLS LAST*/ - if (operId == typentry->lt_opr) - appendStringInfoString(es->str, " ASC"); - else if (operId == typentry->gt_opr) - appendStringInfoString(es->str, " DESC"); - else - { - opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); - operform = (Form_pg_operator) GETSTRUCT (opertup); - oprname = NameStr(operform->oprname); - appendStringInfo(es->str, " USING %s", oprname); - ReleaseSysCache(opertup); - } - if (plan->nullsFirst[keyno]) - appendStringInfoString(es->str, " NULLS FIRST"); - else - appendStringInfoString(es->str, " NULLS LAST"); - } - appendStringInfoChar(es->str, '\n'); + } + + for (keyno = 0; keyno < nkeys; keyno++) + { + char sort_order_value[200] = ""; + Oid collId = plan->collations[keyno]; + Oid operId = plan->sortOperators[keyno]; + + AttrNumber keyresno = keycols[keyno]; + TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, + keyresno); + + sortcoltype = exprType(target->expr); + typentry = lookup_type_cache(sortcoltype, + TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); + + if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) + { + char *collname = get_collation_name(collId); + char *localeptr = setlocale(LC_COLLATE, NULL); + strcat(sort_order_value, "COLLATE \""); + strcat(sort_order_value, collname); + strcat(sort_order_value, "\""); + /* for those who use COLLATE although their default is already + * the wanted */ + if (strcmp(collname, localeptr) == 0) + { + strcat(sort_order_value, " ("); + strcat(sort_order_value, collname); + strcat(sort_order_value, " is LC_COLLATE)"); + } + } + /* print verbose information, also defaults like ASC NULLS LAST*/ + if (operId == typentry->lt_opr) + { + strcat(sort_order_value, " ASC"); + } + else if (operId == typentry->gt_opr) + { + strcat(sort_order_value, " DESC"); + } + else + { + opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); + operform = (Form_pg_operator) GETSTRUCT (opertup); + oprname = NameStr(operform->oprname); + strcat(sort_order_value, " USING "); + strcat(sort_order_value, oprname); + ReleaseSysCache(opertup); + } + if (plan->nullsFirst[keyno]) + { + strcat(sort_order_value, " NULLS FIRST"); + } + else + { + strcat(sort_order_value, " NULLS LAST"); + } + elements = lappend(elements, sort_order_value); + } + + ExplainPropertyList("Sort Order", elements, es); } /* * If it's EXPLAIN ANALYZE, show tuplesort stats for a sort node -- 1.9.1
2014-11-25 11:32:44 mtimm_01 explain sortorder New Comment Patch: From a864cfd1974d1fdf4f888434e963403782dca490 Mon Sep 17 00:00:00 2001 From: Arne Scheffer <scheffa@uni-muenster.de> Date: Sun, 9 Nov 2014 18:21:18 +0100 Subject: [PATCH 1/3] explain sortorder Display sort order options in VERBOSE mode of EXPLAIN For creating indexes on more than one column, it is useful to know the sort order of each sort key. So now, if you run EXPLAIN in VERBOSE mode, you get the sort order information in the order the sort keys are displayed. Signed-off-by: Marius Timmer <mtimm_01@uni-muenster.de> --- src/backend/commands/explain.c | 80 +++++++++++++++++++++++++ src/test/regress/expected/explain_sortorder.out | 19 ++++++ src/test/regress/expected/inherit.out | 9 ++- src/test/regress/parallel_schedule | 2 +- src/test/regress/serial_schedule | 1 + src/test/regress/sql/explain_sortorder.sql | 12 ++++ 6 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 src/test/regress/expected/explain_sortorder.out create mode 100644 src/test/regress/sql/explain_sortorder.sql diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 99aa0f0..c1be1ef 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -14,6 +14,9 @@ #include "postgres.h" #include "access/xact.h" +#include "access/htup_details.h" +#include "catalog/pg_collation.h" +#include "catalog/pg_operator.h" #include "catalog/pg_type.h" #include "commands/createas.h" #include "commands/defrem.h" @@ -30,7 +33,9 @@ #include "utils/rel.h" #include "utils/ruleutils.h" #include "utils/snapmgr.h" +#include "utils/syscache.h" #include "utils/tuplesort.h" +#include "utils/typcache.h" #include "utils/xml.h" @@ -84,6 +89,7 @@ static void show_group_keys(GroupState *gstate, List *ancestors, static void show_sort_group_keys(PlanState *planstate, const char *qlabel, int nkeys, AttrNumber *keycols, List *ancestors, ExplainState *es); +static void show_sort_order(SortState *sortstate, ExplainState *es); static void show_sort_info(SortState *sortstate, ExplainState *es); static void show_hash_info(HashState *hashstate, ExplainState *es); static void show_tidbitmap_info(BitmapHeapScanState *planstate, @@ -1436,6 +1442,8 @@ ExplainNode(PlanState *planstate, List *ancestors, break; case T_Sort: show_sort_keys((SortState *) planstate, ancestors, es); + if (es->verbose) + show_sort_order((SortState *)planstate, es); show_sort_info((SortState *) planstate, es); break; case T_MergeAppend: @@ -1879,7 +1887,79 @@ show_sort_group_keys(PlanState *planstate, const char *qlabel, ExplainPropertyList(qlabel, result, es); } +/* + * In verbose mode, additional information about the collation, sort order + * and NULLS FIRST/LAST is printed + */ +static void +show_sort_order(SortState *sortstate, ExplainState *es) +{ + Sort *plan = (Sort *) sortstate->ss.ps.plan; + Plan *planstatePlan = (Plan *) sortstate->ss.ps.plan; + + int nkeys = plan->numCols; + AttrNumber *keycols = plan->sortColIdx; + int keyno; + + Oid sortcoltype; + TypeCacheEntry *typentry; + + HeapTuple opertup; + Form_pg_operator operform; + char *oprname; + + if (nkeys <= 0) + return; + + appendStringInfoSpaces(es->str, es->indent * 2); + appendStringInfoString(es->str, "Sort Order:"); + + for (keyno = 0; keyno < nkeys; keyno++) + { + Oid collId = plan->collations[keyno]; + Oid operId = plan->sortOperators[keyno]; + + AttrNumber keyresno = keycols[keyno]; + TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, + keyresno); + + sortcoltype = exprType(target->expr); + typentry = lookup_type_cache(sortcoltype, + TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); + if (keyno!=0) + appendStringInfoString(es->str, ","); + + if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) + { + char *collname = get_collation_name(collId); + char *localeptr = setlocale(LC_COLLATE, NULL); + appendStringInfo(es->str, " COLLATE \"%s\"", collname); + /* for those who use COLLATE although their default is already + * the wanted */ + if (strcmp(collname, localeptr) == 0) + appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); + } + /* print verbose information, also defaults like ASC NULLS LAST*/ + if (operId == typentry->lt_opr) + appendStringInfoString(es->str, " ASC"); + else if (operId == typentry->gt_opr) + appendStringInfoString(es->str, " DESC"); + else + { + opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); + operform = (Form_pg_operator) GETSTRUCT (opertup); + oprname = NameStr(operform->oprname); + appendStringInfo(es->str, " USING %s", oprname); + ReleaseSysCache(opertup); + } + if (plan->nullsFirst[keyno]) + appendStringInfoString(es->str, " NULLS FIRST"); + else + appendStringInfoString(es->str, " NULLS LAST"); + } + appendStringInfoChar(es->str, '\n'); +} /* * If it's EXPLAIN ANALYZE, show tuplesort stats for a sort node */ diff --git a/src/test/regress/expected/explain_sortorder.out b/src/test/regress/expected/explain_sortorder.out new file mode 100644 index 0000000..ed39b51 --- /dev/null +++ b/src/test/regress/expected/explain_sortorder.out @@ -0,0 +1,19 @@ +-- +-- Test explain feature: sort order +-- +CREATE TABLE sortordertest (n1 char(1), n2 int4); +-- Insert values by which should be ordered +INSERT INTO sortordertest(n1, n2) VALUES ('d', 5), ('b', 3), ('a', 1), ('e', 2), ('c', 4); +-- Display sort order when explain analyze and verbose are true. +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM sortordertest ORDER BY n1 COLLATE "C" DESC, n2; + QUERY PLAN +------------------------------------------------------------ + Sort + Output: n1, n2, ((n1)::character(1)) + Sort Key: sortordertest.n1, sortordertest.n2 + Sort Order: COLLATE "C" DESC NULLS FIRST, ASC NULLS LAST + -> Seq Scan on public.sortordertest + Output: n1, n2, n1 +(6 rows) + +DROP TABLE sortordertest; diff --git a/src/test/regress/expected/inherit.out b/src/test/regress/expected/inherit.out index 56e2c99..9492066 100644 --- a/src/test/regress/expected/inherit.out +++ b/src/test/regress/expected/inherit.out @@ -1187,6 +1187,7 @@ explain (verbose, costs off) select * from matest0 order by 1-id; Sort Output: matest0.id, matest0.name, ((1 - matest0.id)) Sort Key: ((1 - matest0.id)) + Sort Order: ASC NULLS LAST -> Result Output: matest0.id, matest0.name, (1 - matest0.id) -> Append @@ -1198,7 +1199,7 @@ explain (verbose, costs off) select * from matest0 order by 1-id; Output: matest2.id, matest2.name -> Seq Scan on public.matest3 Output: matest3.id, matest3.name -(14 rows) +(15 rows) select * from matest0 order by 1-id; id | name @@ -1247,11 +1248,12 @@ explain (verbose, costs off) select * from matest0 order by 1-id; -> Sort Output: matest2.id, matest2.name, ((1 - matest2.id)) Sort Key: ((1 - matest2.id)) + Sort Order: ASC NULLS LAST -> Seq Scan on public.matest2 Output: matest2.id, matest2.name, (1 - matest2.id) -> Index Scan using matest3i on public.matest3 Output: matest3.id, matest3.name, (1 - matest3.id) -(13 rows) +(14 rows) select * from matest0 order by 1-id; id | name @@ -1285,6 +1287,7 @@ explain (verbose, costs off) select min(1-id) from matest0; -> Sort Output: matest2.id, ((1 - matest2.id)) Sort Key: ((1 - matest2.id)) + Sort Order: ASC NULLS LAST -> Bitmap Heap Scan on public.matest2 Output: matest2.id, (1 - matest2.id) Filter: ((1 - matest2.id) IS NOT NULL) @@ -1292,7 +1295,7 @@ explain (verbose, costs off) select min(1-id) from matest0; -> Index Scan using matest3i on public.matest3 Output: matest3.id, (1 - matest3.id) Index Cond: ((1 - matest3.id) IS NOT NULL) -(25 rows) +(26 rows) select min(1-id) from matest0; min diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index d4f02e5..7d12852 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -59,7 +59,7 @@ test: create_index create_view # ---------- # Another group of parallel tests # ---------- -test: create_aggregate create_function_3 create_cast constraints triggers inherit create_table_like typed_table vacuum drop_if_exists updatable_views +test: create_aggregate create_function_3 create_cast constraints triggers inherit create_table_like typed_table vacuum drop_if_exists updatable_views explain_sortorder # ---------- # sanity_check does a vacuum, affecting the sort order of SELECT * diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule index 611b0a8..bbca2c6 100644 --- a/src/test/regress/serial_schedule +++ b/src/test/regress/serial_schedule @@ -71,6 +71,7 @@ test: typed_table test: vacuum test: drop_if_exists test: updatable_views +test: explain_sortorder test: sanity_check test: errors test: select diff --git a/src/test/regress/sql/explain_sortorder.sql b/src/test/regress/sql/explain_sortorder.sql new file mode 100644 index 0000000..2600316 --- /dev/null +++ b/src/test/regress/sql/explain_sortorder.sql @@ -0,0 +1,12 @@ +-- +-- Test explain feature: sort order +-- +CREATE TABLE sortordertest (n1 char(1), n2 int4); + +-- Insert values by which should be ordered +INSERT INTO sortordertest(n1, n2) VALUES ('d', 5), ('b', 3), ('a', 1), ('e', 2), ('c', 4); + +-- Display sort order when explain analyze and verbose are true. +EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM sortordertest ORDER BY n1 COLLATE "C" DESC, n2; + +DROP TABLE sortordertest; -- 1.9.1 From f144abdf5e529ae131927fee1f0865f5288512fa Mon Sep 17 00:00:00 2001 From: mtimm_01 <mtimm_01@uni-muenster.de> Date: Thu, 20 Nov 2014 12:55:30 +0100 Subject: [PATCH 2/3] Included Testline --- src/backend/commands/explain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index c1be1ef..3dc402d 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1937,6 +1937,7 @@ show_sort_order(SortState *sortstate, ExplainState *es) appendStringInfo(es->str, " COLLATE \"%s\"", collname); /* for those who use COLLATE although their default is already * the wanted */ + /* This is a testline made by mtimm_01 */ if (strcmp(collname, localeptr) == 0) appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); } -- 1.9.1 From 3b2fdc73b7034511e59d57671ed37429c5b62cca Mon Sep 17 00:00:00 2001 From: mtimm_01 <mtimm_01@uni-muenster.de> Date: Thu, 20 Nov 2014 18:27:16 +0100 Subject: [PATCH 3/3] Output now in correct format --- src/backend/commands/explain.c | 115 +++++++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 50 deletions(-) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 3dc402d..1874979 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1908,58 +1908,73 @@ show_sort_order(SortState *sortstate, ExplainState *es) Form_pg_operator operform; char *oprname; + List *elements = NIL; + if (nkeys <= 0) + { return; - - appendStringInfoSpaces(es->str, es->indent * 2); - appendStringInfoString(es->str, "Sort Order:"); - - for (keyno = 0; keyno < nkeys; keyno++) - { - Oid collId = plan->collations[keyno]; - Oid operId = plan->sortOperators[keyno]; - - AttrNumber keyresno = keycols[keyno]; - TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, - keyresno); - - sortcoltype = exprType(target->expr); - typentry = lookup_type_cache(sortcoltype, - TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); - - if (keyno!=0) - appendStringInfoString(es->str, ","); - - if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) - { - char *collname = get_collation_name(collId); - char *localeptr = setlocale(LC_COLLATE, NULL); - appendStringInfo(es->str, " COLLATE \"%s\"", collname); - /* for those who use COLLATE although their default is already - * the wanted */ - /* This is a testline made by mtimm_01 */ - if (strcmp(collname, localeptr) == 0) - appendStringInfo(es->str, " (%s is LC_COLLATE)", collname); - } - /* print verbose information, also defaults like ASC NULLS LAST*/ - if (operId == typentry->lt_opr) - appendStringInfoString(es->str, " ASC"); - else if (operId == typentry->gt_opr) - appendStringInfoString(es->str, " DESC"); - else - { - opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); - operform = (Form_pg_operator) GETSTRUCT (opertup); - oprname = NameStr(operform->oprname); - appendStringInfo(es->str, " USING %s", oprname); - ReleaseSysCache(opertup); - } - if (plan->nullsFirst[keyno]) - appendStringInfoString(es->str, " NULLS FIRST"); - else - appendStringInfoString(es->str, " NULLS LAST"); - } - appendStringInfoChar(es->str, '\n'); + } + + for (keyno = 0; keyno < nkeys; keyno++) + { + char sort_order_value[200] = ""; + Oid collId = plan->collations[keyno]; + Oid operId = plan->sortOperators[keyno]; + + AttrNumber keyresno = keycols[keyno]; + TargetEntry *target = get_tle_by_resno(planstatePlan->targetlist, + keyresno); + + sortcoltype = exprType(target->expr); + typentry = lookup_type_cache(sortcoltype, + TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); + + if (OidIsValid(collId) && collId != DEFAULT_COLLATION_OID) + { + char *collname = get_collation_name(collId); + char *localeptr = setlocale(LC_COLLATE, NULL); + strcat(sort_order_value, "COLLATE \""); + strcat(sort_order_value, collname); + strcat(sort_order_value, "\""); + /* for those who use COLLATE although their default is already + * the wanted */ + if (strcmp(collname, localeptr) == 0) + { + strcat(sort_order_value, " ("); + strcat(sort_order_value, collname); + strcat(sort_order_value, " is LC_COLLATE)"); + } + } + /* print verbose information, also defaults like ASC NULLS LAST*/ + if (operId == typentry->lt_opr) + { + strcat(sort_order_value, " ASC"); + } + else if (operId == typentry->gt_opr) + { + strcat(sort_order_value, " DESC"); + } + else + { + opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(operId)); + operform = (Form_pg_operator) GETSTRUCT (opertup); + oprname = NameStr(operform->oprname); + strcat(sort_order_value, " USING "); + strcat(sort_order_value, oprname); + ReleaseSysCache(opertup); + } + if (plan->nullsFirst[keyno]) + { + strcat(sort_order_value, " NULLS FIRST"); + } + else + { + strcat(sort_order_value, " NULLS LAST"); + } + elements = lappend(elements, sort_order_value); + } + + ExplainPropertyList("Sort Order", elements, es); } /* * If it's EXPLAIN ANALYZE, show tuplesort stats for a sort node -- 1.9.1
2014-11-25 11:30:31 mtimm_01 explain sortorder New Comment Patch: Initial version. (Message-ID: a864cfd1974d1fdf4f888434e963403782dca490)
2014-11-25 11:30:31 mtimm_01 explain sortorder New Patch Name = explain sortorder, Topic = Server Features, Patch Status = Needs Review, Author = Marius Timmer <mtimm_01@uni-muenster.de>, Reviewers = Nobody, Committer = Marius Timmer <mtimm_01@uni-muenster.de>, Date Closed = NULL
2014-11-23 22:39:45 johto HINT on qualified LHS references in UPDATE .. SET Patch Edited Patch Status = Waiting on Author
2014-11-23 22:39:41 johto HINT on qualified LHS references in UPDATE .. SET New Comment Review: Tom's review (Message-ID: 9691.1416675736@sss.pgh.pa.us)
2014-11-23 20:40:47 fuzzycz adaptive ndistinct estimator New Patch Name = adaptive ndistinct estimator, Topic = Miscellaneous, Patch Status = Needs Review, Author = Tomas Vondra, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-23 20:40:47 fuzzycz adaptive ndistinct estimator New Comment Patch: Initial version. (Message-ID: 5472416C.3080506@fuzzy.cz)
2014-11-23 06:43:53 davidrowley INNER JOIN removals New Patch Name = INNER JOIN removals, Topic = Performance, Patch Status = Needs Review, Author = David Rowley, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-23 06:43:53 davidrowley INNER JOIN removals New Comment Patch: Initial version. (Message-ID: CAApHDvqAigcNnp4D5LbBaZgH_se=6jXWQXxYrQx8bXEukr3G6w@mail.gmail.com)
2014-11-22 11:59:27 johto HINT on qualified LHS references in UPDATE .. SET Edit Comment Patch: Patch v2: fix behaviour with aliases (Message-ID: 54707A64.6060500@joh.to)
2014-11-22 11:59:08 johto HINT on qualified LHS references in UPDATE .. SET New Comment Patch: Patch v2 (Message-ID: 54707A64.6060500@joh.to)
2014-11-22 04:14:01 pgeoghegan HINT on qualified LHS references in UPDATE .. SET Patch Edited Reviewers = Peter Geoghegan
2014-11-22 03:51:39 johto HINT on qualified LHS references in UPDATE .. SET New Patch Name = HINT on qualified LHS references in UPDATE .. SET, Topic = Miscellaneous, Patch Status = Needs Review, Author = Marko Tiikkaja, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-22 03:51:39 johto HINT on qualified LHS references in UPDATE .. SET New Comment Patch: Initial version. (Message-ID: 547007C6.8040204@joh.to)
2014-11-21 05:45:41 michael-kun Fillfactor for GIN indexes New Patch Name = Fillfactor for GIN indexes, Topic = Server Features, Patch Status = Needs Review, Author = Michael Paquier, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-21 05:45:41 michael-kun Fillfactor for GIN indexes New Comment Patch: Initial version. (Message-ID: CAB7nPqR36boo_qNnkGzq53vLwET5_E9bXJsusojGqN2TopXx9w@mail.gmail.com)
2014-11-19 12:37:26 mha pg_stat_ssl view New Comment Patch: Initial version. (Message-ID: CABUevEzE_3ch3ArxRDC1zt0rf4gdm9_JryHTtJaOy-mt7q3WZA@mail.gmail.com)
2014-11-19 12:37:26 mha pg_stat_ssl view New Patch Name = pg_stat_ssl view, Topic = Monitoring & Control, Patch Status = Needs Review, Author = Magnus Hagander, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-14 00:59:21 kandreas Using 128-bit integers for sum, avg and statistics aggregates New Comment Patch: Fixed configure.in. (Message-ID: 5465536C.5020401@proxel.se)
2014-11-13 01:34:21 kandreas Using 128-bit integers for sum, avg and statistics aggregates Edit Comment Patch: Initial version. (Message-ID: 54640A2C.6090702@proxel.se)
2014-11-13 01:06:22 kandreas Using 128-bit integers for sum, avg and statistics aggregates New Patch Name = Using 128-bit integers for sum, avg and statistics aggregates, Topic = Performance, Patch Status = Needs Review, Author = Andreas Karlsson, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-13 01:06:22 kandreas Using 128-bit integers for sum, avg and statistics aggregates New Comment Patch: Initial version. (Message-ID: 54640358.8030304@proxel.se)
2014-11-06 21:07:32 decibel Clarify need for memory barriers in bgworkers New Patch Name = Clarify need for memory barriers in bgworkers, Topic = Code Comments, Patch Status = Needs Review, Author = Jim Nasby, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-06 21:07:32 decibel Clarify need for memory barriers in bgworkers New Comment Patch: Initial version. (Message-ID: <544AF3FB.5000604@BlueTreble.com>)
2014-11-06 21:06:24 decibel Comment on "lack" of optimization in CacheInvalidateHeapTuple New Comment Patch: Initial version. (Message-ID: <5446F511.60603@BlueTreble.com>)
2014-11-06 21:06:24 decibel Comment on "lack" of optimization in CacheInvalidateHeapTuple New Patch Name = Comment on "lack" of optimization in CacheInvalidateHeapTuple, Topic = Code Comments, Patch Status = Needs Review, Author = Jim Nasby, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-06 21:04:40 decibel Spurious set in heap_prune_chain New Patch Name = Spurious set in heap_prune_chain, Topic = Miscellaneous, Patch Status = Needs Review, Author = Jim Nasby, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-06 21:04:40 decibel Spurious set in heap_prune_chain New Comment Patch: Initial version. (Message-ID: <5446E35C.9060208@BlueTreble.com>)
2014-11-06 21:03:17 decibel Retry cleanup locks in vacuum New Comment Patch: Initial version. (Message-ID: 545BE049.4090500@BlueTreble.com)
2014-11-06 21:03:17 decibel Retry cleanup locks in vacuum New Patch Name = Retry cleanup locks in vacuum, Topic = Miscellaneous, Patch Status = Needs Review, Author = Jim Nasby, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-11-04 11:03:00 leopard Add restore_command_retry_interval option to control timeout of restore_command nonzero status code Patch Edited Moved From CommitFest = 2014-10, Topic = System Administration
2014-11-03 08:57:06 johto Fix silly coding in pgcrypto Patch Edited Patch Status = Committed, Committer = Noah Misch, Date Closed = 2014-11-03
2014-11-02 10:36:52 johto Fix silly coding in pgcrypto New Comment Patch: Initial version. (Message-ID: 5455AEB1.7030801@joh.to)
2014-11-02 10:36:52 johto Fix silly coding in pgcrypto New Patch Name = Fix silly coding in pgcrypto, Topic = Miscellaneous, Patch Status = Needs Review, Author = Marko Tiikkaja, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-10-22 13:46:28 sigaev compress method for spgist New Patch Name = compress method for spgist, Topic = Server Features, Patch Status = Needs Review, Author = Teodor Sigaev, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-10-22 13:46:28 sigaev compress method for spgist New Comment Patch: Initial version. (Message-ID: 5447B3FF.2080406@sigaev.ru)
2014-10-22 13:18:33 sigaev speedup tidbitmap patch: hash BlockNumber New Comment Patch: Initial version. (Message-ID: 5447ADC3.6000408@sigaev.ru)
2014-10-22 13:18:33 sigaev speedup tidbitmap patch: hash BlockNumber New Patch Name = speedup tidbitmap patch: hash BlockNumber, Topic = Performance, Patch Status = Needs Review, Author = Teodor Sigaev, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-10-22 11:57:16 sigaev speedup tidbitmap patch: cache page New Comment Patch: Initial version. (Message-ID: 54479A85.8060309@sigaev.ru)
2014-10-22 11:57:16 sigaev speedup tidbitmap patch: cache page New Patch Name = speedup tidbitmap patch: cache page, Topic = Performance, Patch Status = Needs Review, Author = Teodor Sigaev, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-10-22 11:25:46 sigaev btree_gin and ranges New Patch Name = btree_gin and ranges, Topic = Performance, Patch Status = Needs Review, Author = Teodor Sigaev, Reviewers = Nobody, Committer = Nobody, Date Closed = NULL
2014-10-22 11:25:46 sigaev btree_gin and ranges New Comment Patch: Initial version. (Message-ID: 54478D0A.9050309@sigaev.ru)
2014-10-20 17:31:09 kgrittn GetUserId() to has_privs_of_role() cleanup. Patch Edited Moved From CommitFest = 2014-10, Topic = Security
2014-10-17 20:16:02 kgrittn documentation update for doc/src/sgml/func.sgml Patch Edited Moved From CommitFest = 2014-10, Topic = Documentation