{"push_id":912961198,"size":147,"distinct_size":12,"ref":"refs/heads/REL9_4_STABLE","head":"193ced63034b18a0a34a3b84843707920cb7e256","before":"be451489dcbc1fbc62fea67be3dfe5d965ce69e3","commits":[{"sha":"2405107b43ac0739b31251f433a5aaa87b61ecf1","author":{"email":"1db01d43e08596f43a65fb393d969b98ee5b4dc6@leadboat.com","name":"Noah Misch"},"message":"AIX: Link the postgres executable with -Wl,-brtllib.\n\nThis allows PostgreSQL modules and their dependencies to have undefined\nsymbols, resolved at runtime.  Perl module shared objects rely on that\nin Perl 5.8.0 and later.  This fixes the crash when PL/PerlU loads such\nmodules, as the hstore_plperl test suite does.  Module authors can link\nusing -Wl,-G to permit undefined symbols; by default, linking will fail\nas it has.  Back-patch to 9.0 (all supported versions).","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/2405107b43ac0739b31251f433a5aaa87b61ecf1"},{"sha":"c97883a5ba5c0d6b6210d8753f8ac5b99b305984","author":{"email":"9f4ca770b638615ac5c3e0d2da16b77c80c2f2c6@hagander.net","name":"Magnus Hagander"},"message":"Fix spelling error\n\nDavid Rowley","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/c97883a5ba5c0d6b6210d8753f8ac5b99b305984"},{"sha":"b8f368276916b677f0678982e81723fe30e5c582","author":{"email":"ffeaa947aef224da9ba99b6a18bdd74288df0e3e@sss.pgh.pa.us","name":"Tom Lane"},"message":"Fix a low-probability crash in our qsort implementation.\n\nIt's standard for quicksort implementations, after having partitioned the\ninput into two subgroups, to recurse to process the smaller partition and\nthen handle the larger partition by iterating.  This method guarantees\nthat no more than log2(N) levels of recursion can be needed.  However,\nBentley and McIlroy argued that checking to see which partition is smaller\nisn't worth the cycles, and so their code doesn't do that but just always\nrecurses on the left partition.  In most cases that's fine; but with\nworst-case input we might need O(N) levels of recursion, and that means\nthat qsort could be driven to stack overflow.  Such an overflow seems to\nbe the only explanation for today's report from Yiqing Jin of a SIGSEGV\nin med3_tuple while creating an index of a couple billion entries with a\nvery large maintenance_work_mem setting.  Therefore, let's spend the few\nadditional cycles and lines of code needed to choose the smaller partition\nfor recursion.\n\nAlso, fix up the qsort code so that it properly uses size_t not int for\nsome intermediate values representing numbers of items.  This would only\nbe a live risk when sorting more than INT_MAX bytes (in qsort/qsort_arg)\nor tuples (in qsort_tuple), which I believe would never happen with any\ncaller in the current core code --- but perhaps it could happen with\ncall sites in third-party modules?  In any case, this is trouble waiting\nto happen, and the corrected code is probably if anything shorter and\nfaster than before, since it removes sign-extension steps that had to\nhappen when converting between int and size_t.\n\nIn passing, move a couple of CHECK_FOR_INTERRUPTS() calls so that it's\nnot necessary to preserve the value of \"r\" across them, and prettify\nthe output of gen_qsort_tuple.pl a little.\n\nBack-patch to all supported branches.  The odds of hitting this issue\nare probably higher in 9.4 and up than before, due to the new ability\nto allocate sort workspaces exceeding 1GB, but there's no good reason\nto believe that it's impossible to crash older branches this way.","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/b8f368276916b677f0678982e81723fe30e5c582"},{"sha":"f3f037e187c601d76777ae10b10657a0c0d3299c","author":{"email":"1db01d43e08596f43a65fb393d969b98ee5b4dc6@leadboat.com","name":"Noah Misch"},"message":"AIX: Test the -qlonglong option before use.\n\nxlc provides \"long long\" unconditionally at C99-compatible language\nlevels, and this option provokes a warning.  The warning interferes with\n\"configure\" tests that fail in response to any warning.  Notably, before\ncommit 85a2a8903f7e9151793308d0638621003aded5ae, it interfered with the\ntest for -qnoansialias.  Back-patch to 9.0 (all supported versions).","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/f3f037e187c601d76777ae10b10657a0c0d3299c"},{"sha":"29efe1b5ebc82512cae363349bae6dd22e9b00eb","author":{"email":"ffeaa947aef224da9ba99b6a18bdd74288df0e3e@sss.pgh.pa.us","name":"Tom Lane"},"message":"Make WaitLatchOrSocket's timeout detection more robust.\n\nIn the previous coding, timeout would be noticed and reported only when\npoll() or socket() returned zero (or the equivalent behavior on Windows).\nOrdinarily that should work well enough, but it seems conceivable that we\ncould get into a state where poll() always returns a nonzero value --- for\nexample, if it is noticing a condition on one of the file descriptors that\nwe do not think is reason to exit the loop.  If that happened, we'd be in a\nbusy-wait loop that would fail to terminate even when the timeout expires.\n\nWe can make this more robust at essentially no cost, by deciding to exit\nof our own accord if we compute a zero or negative time-remaining-to-wait.\nPreviously the code noted this but just clamped the time-remaining to zero,\nexpecting that we'd detect timeout on the next loop iteration.\n\nBack-patch to 9.2.  While 9.1 had a version of WaitLatchOrSocket, it was\nprimitive compared to later versions, and did not guarantee reliable\ndetection of timeouts anyway.  (Essentially, this is a refinement of\ncommit 3e7fdcffd6f77187, which was back-patched only as far as 9.2.)","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/29efe1b5ebc82512cae363349bae6dd22e9b00eb"},{"sha":"49c30004073fdb90800054cd1d13e5ab441f6283","author":{"email":"3c84f0de6f8a0f296d36cdd9f57fa166641c96b1@alvh.no-ip.org","name":"Alvaro Herrera"},"message":"Fix (some of) pltcl memory usage\n\nAs reported by Bill Parker, PL/Tcl did not validate some malloc() calls\nagainst NULL return.  Fix by using palloc() in a new long-lived memory\ncontext instead.  This allows us to simplify error handling too, by\nsimply deleting the memory context instead of doing retail frees.\n\nThere's still a lot that could be done to improve PL/Tcl's memory\nhandling ...\n\nThis is pretty ancient, so backpatch all the way back.\n\nAuthor: Michael Paquier and Álvaro Herrera\nDiscussion: https://www.postgresql.org/message-id/CAFrbyQwyLDYXfBOhPfoBGqnvuZO_Y90YgqFM11T2jvnxjLFmqw@mail.gmail.com","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/49c30004073fdb90800054cd1d13e5ab441f6283"},{"sha":"b6e7780346bae5fe07bd4631d355e692e1a8d006","author":{"email":"ffeaa947aef224da9ba99b6a18bdd74288df0e3e@sss.pgh.pa.us","name":"Tom Lane"},"message":"Fix add_rte_to_flat_rtable() for recent feature additions.\n\nThe TABLESAMPLE and row security patches each overlooked this function,\nthough their errors of omission were opposite: RLS failed to zero out the\nsecurityQuals field, leading to wasteful copying of useless expression\ntrees in finished plans, while TABLESAMPLE neglected to add a comment\nsaying that it intentionally *isn't* deleting the tablesample subtree.\nThere probably should be a similar comment about ctename, too.\n\nBack-patch as appropriate.","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/b6e7780346bae5fe07bd4631d355e692e1a8d006"},{"sha":"b7551339dfde58682dfd9f32f6cea27491da6463","author":{"email":"ac1e0af1ee8efe15f889b38482e897ff7d0f0432@iki.fi","name":"Heikki Linnakangas"},"message":"Fix off-by-one error in calculating subtrans/multixact truncation point.\n\nIf there were no subtransactions (or multixacts) active, we would calculate\nthe oldestxid == next xid. That's correct, but if next XID happens to be\non the next pg_subtrans (pg_multixact) page, the page does not exist yet,\nand SimpleLruTruncate will produce an \"apparent wraparound\" warning. The\nwarning is harmless in this case, but looks very alarming to users.\n\nBackpatch to all supported versions. Patch and analysis by Thomas Munro.","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/b7551339dfde58682dfd9f32f6cea27491da6463"},{"sha":"41ed5bb9aeddddbe8f8afb901567fd5f306d2a45","author":{"email":"02e0a999c50b1f88df7a8f5a04e1b76b35ea6a88@dunslane.net","name":"Andrew Dunstan"},"message":"Restore use of zlib default compression in pg_dump directory mode.\n\nThis was broken by commit 0e7e355f27302b62af3e1add93853ccd45678443 and\nfriends, which ignored the fact that gzopen() will treat \"-1\" in the\nmode argument as an invalid character, which it ignores, and a flag for\ncompression level 1. Now, when this value is encountered no compression\nlevel flag is passed  to gzopen, leaving it to use the zlib default.\n\nAlso, enforce the documented allowed range for pg_dump's -Z option,\nnamely 0 .. 9, and remove some consequently dead code from\npg_backup_tar.c.\n\nProblem reported by Marc Mamin.\n\nBackpatch to 9.1, like the patch that introduced the bug.","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/41ed5bb9aeddddbe8f8afb901567fd5f306d2a45"},{"sha":"491c24f055fd14032dee6ed75d43d3aa076add0e","author":{"email":"ffeaa947aef224da9ba99b6a18bdd74288df0e3e@sss.pgh.pa.us","name":"Tom Lane"},"message":"Make entirely-dummy appendrels get marked as such in set_append_rel_size.\n\nThe planner generally expects that the estimated rowcount of any relation\nis at least one row, *unless* it has been proven empty by constraint\nexclusion or similar mechanisms, which is marked by installing a dummy path\nas the rel's cheapest path (cf. IS_DUMMY_REL).  When I split up\nallpaths.c's processing of base rels into separate set_base_rel_sizes and\nset_base_rel_pathlists steps, the intention was that dummy rels would get\nmarked as such during the \"set size\" step; this is what justifies an Assert\nin indxpath.c's get_loop_count that other relations should either be dummy\nor have positive rowcount.  Unfortunately I didn't get that quite right\nfor append relations: if all the child rels have been proven empty then\nset_append_rel_size would come up with a rowcount of zero, which is\ncorrect, but it didn't then do set_dummy_rel_pathlist.  (We would have\nended up with the right state after set_append_rel_pathlist, but that's\ntoo late, if we generate indexpaths for some other rel first.)\n\nIn addition to fixing the actual bug, I installed an Assert enforcing this\nconvention in set_rel_size; that then allows simplification of a couple\nof now-redundant tests for zero rowcount in set_append_rel_size.\n\nAlso, to cover the possibility that third-party FDWs have been careless\nabout not returning a zero rowcount estimate, apply clamp_row_est to\nwhatever an FDW comes up with as the rows estimate.\n\nPer report from Andreas Seltenreich.  Back-patch to 9.2.  Earlier branches\ndid not have the separation between set_base_rel_sizes and\nset_base_rel_pathlists steps, so there was no intermediate state where an\nappendrel would have had inconsistent rowcount and pathlist.  It's possible\nthat adding the Assert to set_rel_size would be a good idea in older\nbranches too; but since they're not under development any more, it's likely\nnot worth the trouble.","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/491c24f055fd14032dee6ed75d43d3aa076add0e"},{"sha":"579b9f97ce99c3ddc8e1de0e1b1f160da2e669c7","author":{"email":"ac1e0af1ee8efe15f889b38482e897ff7d0f0432@iki.fi","name":"Heikki Linnakangas"},"message":"Fix handling of all-zero pages in SP-GiST vacuum.\n\nSP-GiST initialized an all-zeros page at vacuum, but that was not\nWAL-logged, which is not safe. You might get a torn page write, when it gets\nflushed to disk, and end-up with a half-initialized index page. To fix,\nleave it in the all-zeros state, and add it to the FSM. It will be\ninitialized when reused. Also don't set the page-deleted flag when recycling\nan empty page. That was also not WAL-logged, and a torn write of that would\ncause the page to have an invalid checksum.\n\nBackpatch to 9.2, where SP-GiST indexes were added.","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/579b9f97ce99c3ddc8e1de0e1b1f160da2e669c7"},{"sha":"746e7f1c187b1dae02b049b1918e5471d7fedfb6","author":{"email":"ac1e0af1ee8efe15f889b38482e897ff7d0f0432@iki.fi","name":"Heikki Linnakangas"},"message":"Reuse all-zero pages in GIN.\n\nIn GIN, an all-zeros page would be leaked forever, and never reused. Just\nadd them to the FSM in vacuum, and they will be reinitialized when grabbed\nfrom the FSM. On master and 9.5, attempting to access the page's opaque\nstruct also caused an assertion failure, although that was otherwise\nharmless.\n\nReported by Jeff Janes. Backpatch to all supported versions.","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/746e7f1c187b1dae02b049b1918e5471d7fedfb6"},{"sha":"0e98ad0915ce5a665f39707db7652c67a64b5b22","author":{"email":"ac1e0af1ee8efe15f889b38482e897ff7d0f0432@iki.fi","name":"Heikki Linnakangas"},"message":"Don't assume that PageIsEmpty() returns true on an all-zeros page.\n\nIt does currently, and I don't see us changing that any time soon, but we\ndon't make that assumption anywhere else.\n\nPer Tom Lane's suggestion. Backpatch to 9.2, like the previous patch that\nadded this assumption.","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/0e98ad0915ce5a665f39707db7652c67a64b5b22"},{"sha":"ef57b982d5207b29969080a39160bbcb6614e8c3","author":{"email":"02e0a999c50b1f88df7a8f5a04e1b76b35ea6a88@dunslane.net","name":"Andrew Dunstan"},"message":"Improve logging of TAP tests.\n\nCreate a log file for each test run. Stdout and stderr of the test script,\nas well as any subprocesses run as part of the test, are redirected to\nthe log file. This makes it a lot easier to debug test failures. Also print\nthe test output (ok 12 - ... messages) to the log file, and the command\nline of any external programs executed with the system_or_bail and run_log\nfunctions. This makes it a lot easier to debug failing tests.\n\nModify some of the pg_ctl and other command invocations to not use 'silent'\nor 'quiet' options, and don't redirect output to /dev/null, so that you get\nall the information in the log instead.\n\nIn the passing, construct some command lines in a way that works if $tempdir\ncontains quote-characters. I haven't systematically gone through all of\nthem or tested that, so I don't know if this is enough to make that work.\n\npg_rewind tests had a custom mechanism for creating a similar log file. Use\nthe new generic facility instead.\n\nMichael Paquier and Heikki Linnakangas.\n\nThis os a backpatch of Heikki's commit\n1ea06203b82b98b5098808667f6ba652181ef5b2 modified by me to suit 9.4","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/ef57b982d5207b29969080a39160bbcb6614e8c3"},{"sha":"d20f7d5c37d105bef1c5b72dd27d1921dd15252a","author":{"email":"ffeaa947aef224da9ba99b6a18bdd74288df0e3e@sss.pgh.pa.us","name":"Tom Lane"},"message":"Remove an unsafe Assert, and explain join_clause_is_movable_into() better.\n\njoin_clause_is_movable_into() is approximate, in the sense that it might\nsometimes return \"false\" when actually it would be valid to push the given\njoin clause down to the specified level.  This is okay ... but there was\nan Assert in get_joinrel_parampathinfo() that's only safe if the answers\nare always exact.  Comment out the Assert, and add a bunch of commentary\nto clarify what's going on.\n\nPer fuzz testing by Andreas Seltenreich.  The added regression test is\na pretty silly query, but it's based on his crasher example.\n\nBack-patch to 9.2 where the faulty logic was introduced.","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/d20f7d5c37d105bef1c5b72dd27d1921dd15252a"},{"sha":"450bf0ba530101822e6d5ecdd3d9c13fe01ebce5","author":{"email":"02e0a999c50b1f88df7a8f5a04e1b76b35ea6a88@dunslane.net","name":"Andrew Dunstan"},"message":"Make tap tests store postmaster logs and handle vpaths correctly\n\nGiven this it is possible that the buildfarm animals running these tests\nwill be able to capture adequate logging to allow diagnosis of failures.","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/450bf0ba530101822e6d5ecdd3d9c13fe01ebce5"},{"sha":"ab60847822463613629e11e0675952320319197a","author":{"email":"883768b6dd2c42aea0031b24be8a2da40fef4b64@anarazel.de","name":"Andres Freund"},"message":"Disable ssl renegotiation by default.\n\nWhile postgres' use of SSL renegotiation is a good idea in theory, it\nturned out to not work well in practice. The specification and openssl's\nimplementation of it have lead to several security issues. Postgres' use\nof renegotiation also had its share of bugs.\n\nAdditionally OpenSSL has a bunch of bugs around renegotiation, reported\nand open for years, that regularly lead to connections breaking with\nobscure error messages. We tried increasingly complex workarounds to get\naround these bugs, but we didn't find anything complete.\n\nSince these connection breakages often lead to hard to debug problems,\ne.g. spuriously failing base backups and significant latency spikes when\nsynchronous replication is used, we have decided to change the default\nsetting for ssl renegotiation to 0 (disabled) in the released\nbackbranches and remove it entirely in 9.5 and master..\n\nAuthor: Michael Paquier, with changes by me\nDiscussion: 20150624144148.GQ4797@alap3.anarazel.de\nBackpatch: 9.0-9.4; 9.5 and master get a different patch","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/ab60847822463613629e11e0675952320319197a"},{"sha":"082d4283b0e96ad58d7a4bcc196e3bcd9584fb78","author":{"email":"ffeaa947aef224da9ba99b6a18bdd74288df0e3e@sss.pgh.pa.us","name":"Tom Lane"},"message":"Reduce chatter from signaling of autovacuum workers.\n\nDon't print a WARNING if we get ESRCH from a kill() that's attempting\nto cancel an autovacuum worker.  It's possible (and has been seen in the\nbuildfarm) that the worker is already gone by the time we are able to\nexecute the kill, in which case the failure is harmless.  About the only\nplausible reason for reporting such cases would be to help debug corrupted\nlock table contents, but this is hardly likely to be the most important\nsymptom if that happens.  Moreover issuing a WARNING might scare users\nmore than is warranted.\n\nAlso, since sending a signal to an autovacuum worker is now entirely a\nroutine thing, and the worker will log the query cancel on its end anyway,\nreduce the message saying we're doing that from LOG to DEBUG1 level.\n\nVery minor cosmetic cleanup as well.\n\nSince the main practical reason for doing this is to avoid unnecessary\nbuildfarm failures, back-patch to all active branches.","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/082d4283b0e96ad58d7a4bcc196e3bcd9584fb78"},{"sha":"0f272b8b4cf2a2217de64cb72e12530efb9c9e3b","author":{"email":"ffeaa947aef224da9ba99b6a18bdd74288df0e3e@sss.pgh.pa.us","name":"Tom Lane"},"message":"Update our documentation concerning where to create data directories.\n\nAlthough initdb has long discouraged use of a filesystem mount-point\ndirectory as a PG data directory, this point was covered nowhere in the\nuser-facing documentation.  Also, with the popularity of pg_upgrade,\nwe really need to recommend that the PG user own not only the data\ndirectory but its parent directory too.  (Without a writable parent\ndirectory, operations such as \"mv data data.old\" fail immediately.\npg_upgrade itself doesn't do that, but wrapper scripts for it often do.)\n\nHence, adjust the \"Creating a Database Cluster\" section to address\nthese points.  I also took the liberty of wordsmithing the discussion\nof NFS a bit.\n\nThese considerations aren't by any means new, so back-patch to all\nsupported branches.","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/0f272b8b4cf2a2217de64cb72e12530efb9c9e3b"},{"sha":"76cf5f1956cec181dcf0956d0d7b673453a50e74","author":{"email":"1db01d43e08596f43a65fb393d969b98ee5b4dc6@leadboat.com","name":"Noah Misch"},"message":"Blacklist xlc 32-bit inlining.\n\nPer a suggestion from Tom Lane.  Back-patch to 9.0 (all supported\nversions).  While only 9.4 and up have code known to elicit this\ncompiler bug, we were disabling inlining by accident until commit\n43d89a23d59c487bc9258fad7a6187864cb8c0c0.","distinct":false,"url":"https://api.github.com/repos/tatsuo-ishii/jpug-doc/commits/76cf5f1956cec181dcf0956d0d7b673453a50e74"}]}