Re: alpha4 timing - Mailing list pgsql-hackers
From | Tom Lane |
---|---|
Subject | Re: alpha4 timing |
Date | |
Msg-id | 11890.1266476256@sss.pgh.pa.us Whole thread Raw |
In response to | Re: alpha4 timing (Peter Eisentraut <peter_e@gmx.net>) |
List | pgsql-hackers |
Peter Eisentraut <peter_e@gmx.net> writes: > On ons, 2010-02-17 at 14:58 -0800, Josh Berkus wrote: >> On 2/17/10 2:08 PM, Peter Eisentraut wrote: >>> FYI: 9.0alpha4 will be wrapped tomorrow (Thursday) and released >>> Friday'ish. >> >> Can you get me release notes RSN so that I can edit them? > I don't have any release notes yet. Feel free to pitch in ... FWIW, I dug through the CVS logs and picked out all the commit messages that seem worth including since alpha3. Too tired to do more than that ... regards, tom lane 2010-02-16 17:34 tgl * Replace the pg_listener-basedLISTEN/NOTIFY mechanism with an in-memory queue. In addition, addsupport for a "payload"string to be passed along with each notifyevent.This implementation should be significantly more efficient thantheold one, and is also more compatible with Hot Standby usage. Thereis not yet any facility for HS slaves to receivenotificationsgenerated on the master, although such a thing is possible infuture.Joachim Wieland, reviewed by JeffDavis; also hacked on by me. 2010-02-16 17:19 adunstan * Addquery text to auto_explain output.Still to be done: fix docs and fix regression failures underauto_explain. 2010-02-16 16:39 adunstan * Clean up package namespaceuse and use of Safe in plperl. Prevent use of another buggyversion of Safe.pm. Only registerthe exit handler if we have successfully created an interpreter. Change log level of perlwarnings from NOTICE toWARNING.The infrastructure is there if in future we decide to allow DBAs tospecify extra modules that will be allowed intrusted code. However, for now the relevant variables are declared as lexicalsrather than as package variables, so thatthey are not (or shouldnot be) accessible.Mostly code from Tim Bunce, reviewed by Alex Hunsaker, with sometweaks by me. 2010-02-16 16:18 momjian * Honor to_char() "FM"specification in YYY, YY, and Y; it was already honored by YYYY. Also document Oracle "toggle" FMbehavior.Per report from Guy Rouillier 2010-02-16 15:58 momjian * HaveSELECT and CREATE TABLE AS queries return a row count. While thisis invisible in psql, other interfaces, like libpq,make this valuevisible.Boszormenyi Zoltan 2010-02-12 14:35 adunstan * Add plperl.on_plperl_init and plperl.on_plperlu_init settings forlanguage-specific startup. Rename recently addedplperl.on_perl_initto plperl.on_init. Also, code cleanup for utf8hack. Patch from Tim Bunce, reviewed by Alex Hunsaker. 2010-02-12 12:33 tgl * Extend the set of frame optionssupported for window functions.This patch allows the frame to start from CURRENT ROW (ineitherRANGE or ROWS mode), and it also adds support for ROWS n PRECEDINGand ROWS n FOLLOWING start and end points. (RANGEvaluePRECEDING/FOLLOWING isn't there yet --- the grammar works, butthat's all.)Hitoshi Harada, reviewed by Pavel Stehule 2010-02-11 09:29 teodor * Generic implementation of red-black binarytree. It's planned to use in several places, but for now only GINuses it duringindex creation. Using self-balanced tree greatlyspeeds up index creation in corner cases with preordered data. 2010-02-09 16:43 tgl * Fix up rickety handling of relation-truncationinterlocks.Move rd_targblock, rd_fsm_nblocks, and rd_vm_nblocks from relcachetothe smgr relation entries, so that they will get reset toInvalidBlockNumber whenever an smgr-level flush happens. Becausewe now send smgr invalidation messages immediately (not at end oftransaction) when a relation truncationoccurs, this ensures thatother backends will reset their values before they next access therelation. We no longerneed the unreliable assumption that aVACUUM that's doing a truncation will hold its AccessExclusive lockuntil commit--- in fact, we can intentionally release that lock assoon as we've completed the truncation. This patch thereforereverts(most of) Alvaro's patch of 2009-11-10, as well as mymarginal hacking on it yesterday. We can also get ridof assortedno-longer-needed relcache flushes, which are far more expensivethan an smgr flush because they kill a lot morestate.In passing this patch fixes smgr_redo's failure to performvisibility-map truncation, and cleans up some ratherdubiousassumptions in freespace.c and visibilitymap.c about whenrd_fsm_nblocks and rd_vm_nblocks can be out of date. 2010-02-07 23:33 tgl * Remove old-style VACUUM FULL(which was known for a little while as VACUUM FULL INPLACE), alongwith a boatload of subsidiarycode and complexity. Per discussion,the use case for this method of vacuuming is no longer large enoughto justifymaintaining it; not to mention that we don't wish toinvest the work that would be needed to make it play nicely withHotStandby.Aside from the code directly related to old-style VACUUM FULL, thiscommit removes support for certain WALrecord types that could onlybe generated within VACUUM FULL, redirect-pointer removal inheap_page_prune, and nontransactionalgeneration of cacheinvalidation sinval messages (the last being the sticking point forHot Standby).We stillhave to retain all code that copes with findingHEAP_MOVED_OFF and HEAP_MOVED_IN flag bits on existing tuples. This can'tbe removed as long as we want to support in-place updatefrom pre-9.0 databases. 2010-02-07 17:40 tgl * Work around deadlock problems withVACUUM FULL/CLUSTER on system catalogs, as per my recent proposal.First, teach IndexBuildHeapScanto not wait for INSERT_IN_PROGRESSor DELETE_IN_PROGRESS tuples to commit unless the index build ischeckinguniqueness/exclusion constraints. If it isn't, there's noharm in just indexing the in-doubt tuple.Second, modifyVACUUM FULL/CLUSTER to suppress reverifyinguniqueness/exclusion constraint properties while rebuilding indexesof thetarget relation. This is reasonable because these commandsaren't meant to deal with corrupted-data situations. Constraintpropertieswill still be rechecked when an index is rebuilt by aREINDEX command.This gets us out of the problemthat new-style VACUUM FULL wouldoften wait for other transactions while holding exclusive lock on asystem catalog,leading to probable deadlock because those othertransactions need to look at the catalogs too. Although the realultimatecause of the problem is a debatable choice to releaselocks early after modifying system catalogs, changing thatchoicewould require pretty serious analysis and is not something to beundertaken lightly or on a tight schedule. Thepresent patch fixesthe problem in a fairly reasonable way and should also improve thespeed of VACUUM FULL/CLUSTER a littlebit. 2010-02-07 15:48 tgl * Create a "relation mapping"infrastructure to support changing the relfilenodes of shared ornailed system catalogs. Thishas two key benefits:* The new CLUSTER-based VACUUM FULL can be applied safely to allcatalogs.* We no longer have touse an unsafe reindex-in-place approach forreindexing shared catalogs.CLUSTER on nailed catalogs now works too, althoughI left itdisabled on shared catalogs because the resultingpg_index.indisclustered update would only be visible inonedatabase.Since reindexing shared system catalogs is now fully transactionaland crash-safe, the former special casesin REINDEX behavior havebeen removed; shared catalogs are treated the same as non-shared.This commit does not do anythingabout the recently-discussedproblem of deadlocks between VACUUM FULL/CLUSTER on a systemcatalog and other concurrentqueries; will address that in aseparate patch. As a stopgap, parallel_schedule has been tweakedto run vacuum.sqlby itself, to avoid such failures during theregression tests. 2010-02-04 22:09 joe * Modify recently added PQconnectdbParams() with new argument,expand_dbname. If expand_dbname is non-zero and dbname containsan= sign, it is taken as a conninfo string in exactly the same way asif it had been passed to PQconnectdb. This isequivalent to the wayPQsetdbLogin() works, allowing PQconnectdbParams() to be a completealternative.Also improve the waythe new function is called from psql andreplace a previously missed call to PQsetdbLogin() in psql.Additionally use PQconnectdbParams()for pg_dump and friends, andthe bin/scripts command line utilities such as vacuumdb, createdb,etc.Finally,update the documentation for the new parameter, as well asthe nuances of precedence in cases where keywords are repeated orduplicated in the conninfo string. 2010-02-01 14:28 rhaas * Tighten integrity checks on ALTER TABLE ... ALTER COLUMN ...RENAME.When a column is renamed, we recursively rename thesame column inall descendent tables. But if one of those tables also inheritsthat column from a table outside the inheritancehierarchy rootedat the named table, we must throw an error. The previous codingcorrectly prohibited the renamewhen the parent had inherited thecolumn from elsewhere, but overlooked the case where the parent wasOK but a childtable also inherited the same column from a second,unrelated parent.For now, not backpatched due to lack of complaintsfrom the field.KaiGai Kohei, with further changes by me. Reviewed by Bernd Helmeand Tom Lane. 2010-02-01 10:43 rhaas * Augment EXPLAIN output with moredetails on Hash nodes.We show the number of buckets, the number of batches (and also theoriginalnumber if it has changed), and the peak space used by thehash table. Minor executor changes to track peak spaceused. 2010-01-31 22:14 itagaki * Add string_agg aggregatefunctions. The one argument version concatenates the input valuesinto a string. The two argumentversion also does the same thing,but inserts delimiters between elements.Original patch by Pavel Stehule, reviewedby David E. Wheeler andme. 2010-01-29 20:46 adunstan * Add plperl.on_perl_initsetting to provide for initializing the perl library on load. Also,handle END blocks in plperl. Database access is disallowed duringboth these operations, although it might be allowed in END blocksin future.Patchfrom Tim Bunce. 2010-01-29 12:44 rhaas * Allowpsql variables to be interpolated with literal or identifierescaping.Loosely based on a patch by Pavel Stehule. 2010-01-28 18:59 adunstan * Add new make targets "world","install-world" and "installcheck-world" to build, install andcheck just about everything. In addition to everything builtinstalled and tested by all, install and installcheck targets,these build HTMLDocs, build and test contrib, and test PLs andECPG. 2010-01-28 18:21 petere * Type table featureThis adds the CREATE TABLE name OF type command, per SQL standard. 2010-01-28 09:25 mha * Add functions to reset the statistics counter for a singletable/index or a single function. 2010-01-28 01:28 joe * Introduce two new libpq connection functions, PQconnectdbParams andPQconnectStartParams. These are analogous to PQconnectdbandPQconnectStart respectively. They differ from the legacy functionsin that they accept two NULL-terminated arrays,keywords andvalues, rather than conninfo strings. This avoids the need to buildthe conninfo string in cases whereit might be inconvenient to doso. Includes documentation.Also modify psql to utilize PQconnectdbParams rather thanPQsetdbLogin. This allows the new config parameterapplication_name to be set, which in turn is displayed in thepg_stat_activityview and included in CSV log entries. This willalso ensure both new functions get regularly exercised.Patchby Guillaume Lelarge with review and minor adjustments by JoeConway. 2010-01-27 10:27 heikki * Makestandby server continuously retry restoring the next WAL segmentwith restore_command, if the connection to the primaryserver islost. This ensures that the standby can recover automatically, ifthe connection is lost for a long time andstandby falls behind somuch that the required WAL segments have been archived and deletedin the master.This also makesstandby_mode useful without streaming replication;the server will keep retrying restore_command every few secondsuntilthe trigger file is found. That's the same basicfunctionality pg_standby offers, but without the bells andwhistles. 2010-01-27 07:11 mha * Add support for RADIUS authentication. 2010-01-26 18:11 adunstan * Various small improvements and cleanups for PL/Perl.- Allow (ineffective) use of 'require' in plperl If therequiredmodule is not already loaded then it dies. So "usestrict;" now works in plperl.- Pre-load the feature moduleif perl >= 5.10. So "use feature:5.10;" now works in plperl.- Stored procedure subs are now given names. The names are notvisible in ordinary use, but they make tools likeDevel::NYTProf and Devel::Cover much more useful.-Simplified and generalized the subroutine creation code. Nowone code path for generating sub source code, notfour. Cangenerate multiple 'use' statements with specific imports (which handles plperl.use_strict currentlyand can easily beextended to handle a plperl.use_feature=':5.12' in future).- Disallows use of Safe version2.20 which is broken for PL/Perl. http://rt.perl.org/rt3/Ticket/Display.html?id=72068- Assorted minor optimizationsby pre-growing data structures.Patch from Tim Bunce, reviewed by Alex Hunsaker. 2010-01-26 11:33 tgl * Remove the default_do_languageparameter, instead making DO use a hardwired default of "plpgsql". This is more reasonablethan it was when the DO patch was written,because we have since decided that plpgsql should be installed bydefault. Per discussion, having a parameter for this doesn't seemuseful enough to justify the risk of application breakageif thevalue is changed unexpectedly. 2010-01-26 04:07 meskes * Applied patch by Boszormenyi Zoltan<zb@cybertec.at> to add out-of-scope cursor support to native mode. 2010-01-25 19:07 sriggs * Fix longstanding gripe that wecheck for 0000000001.history at start of archive recovery, evenwhen we know it is never present. 2010-01-25 15:55 tgl * Addget_bit/set_bit functions for bit strings, paralleling those forbytea, and implement OVERLAY() for bit strings and bytea.Inpassing also convert text OVERLAY() to a true built-in, insteadof relying on a SQL function.Leonardo F, reviewedby Kevin Grittner 2010-01-22 11:40 rhaas * Replace ALTER TABLE ... SET STATISTICS DISTINCT with a more generalmechanism.Attributes can now have options, just as relationsand tablespacesdo, and the reloptions code is used to parse, validate, and storethem. For simplicity and becausethese options are not performancecritical, we store them in a separate cache rather than the mainrelcache.Thanks toAlex Hunsaker for the review. 2010-01-22 10:45 petere * PL/Python DO handlerAlso cleaned up some redundancies between the primary errormessages and the error context in PL/Python.HannuValtonen 2010-01-22 09:13 meskes * Applied patch by Boszormenyi Zoltan <zb@cybertec.at> to fix problemin auto-prepare mode if the connection is closed andre-opened andthe previously prepared query is issued again. 2010-01-21 09:58 rhaas * Add new escaping functions PQescapeLiteral and PQescapeIdentifier.PQescapeLiteral is similar to PQescapeStringConn, butit relievesthe caller of the need to know how large the output buffer shouldbe, and it provides the appropriate quoting(in addition toescaping special characers within the string). PQescapeIdentifierprovides similar functionalityfor escaping identifiers.Per recent discussion with Tom Lane. 2010-01-20 16:15 petere * Adduser-specific .pg_service.conf fileThis extends the existing pg_service.conf facility to first lookfor a service definitionfile in the user's home directory. 2010-01-20 14:43 heikki * Write a WALrecord whenever we perform an operation without WAL-logging thatwould've been WAL-logged if archiving was enabled.If we encountersuch records in archive recovery anyway, we know that some data ismissing from the log. A WARNINGis emitted in that case.Original patch by Fujii Masao, with changes by me. 2010-01-19 20:08 adunstan * Add utility functions to PLPerl: quote_literal, quote_nullable, quote_ident, encode_bytea,decode_bytea, looks_like_number, encode_array_literal,encode_array_constructor. Split SPI.xs into two - SPI.xs nowcontains only SPIfunctions. Remainder are in new Util.xs. Somemore code and documentation cleanup along the way, as well asadding someCVS markers to files missing them.Original patch from Tim Bunce, with a little editing from me. 2010-01-19 09:11 mha * Add pg_stat_reset_shared('bgwriter') to reset the cluster-wideshared statistics of the bgwriter.Greg Smith 2010-01-19 00:50 tgl * Add pg_table_size() andpg_indexes_size() to provide more user-friendly wrappers around thepg_relation_size() function.BerndHelmle, reviewed by Greg Smith 2010-01-18 20:35 tgl * Add "USING expressions" option toplpgsql's OPEN cursor FOR EXECUTE.This is the last EXECUTE-like plpgsql statement thatwas missingthe capability of inserting parameter values via USING.Pavel Stehule, reviewed by Itagaki Takahiro 2010-01-17 17:56 tgl * Improvethe handling of SET CONSTRAINTS commands by having them searchpg_constraint before searching pg_trigger. This allowssanerhandling of corner cases; in particular we now say "constraint isnot deferrable" rather than "constraint doesnot exist" when thecommand is applied to a constraint that's inherentlynon-deferrable. Per a gripe several months agofrom hubert depeszlubaczewski.To make this work without breaking user-defined constrainttriggers, we have to add entriesfor them to pg_constraint. However, in return we can remove the pgconstrname column frompg_constraint, which representsa fairly sizable space savings. Ialso replaced the tgisconstraint column with tgisinternal; the oldmeaning oftgisconstraint can now be had by testing for nonzerotgconstraint, while there is no other way to get the old meaning ofnonzerotgconstraint, namely that the trigger was internallygenerated rather than being user-created.In passing, fix anold misstatement in the docs and comments,namely that pg_trigger.tgdeferrable is exactly redundant withpg_constraint.condeferrable. Actually, we mark RI action triggersas nondeferrable even when they belong to a nominallydeferrable FKconstraint. The SET CONSTRAINTS code now relies on that instead ofhard-coding a list of exceptionOIDs. 2010-01-16 06:03 petere * Improved printing of Pythonexceptions in PL/PythonMimic the Python interpreter's own logic for printing exceptionsinsteadof just using the straight str() call, so that you get plpy.SPIErrorinstead of <class 'plpy.SPIError'>andfor built-in exceptions merely UnicodeEncodeErrorBesides looking better this cuts down on the endlessversiondifferences in the regression test expected files. 2010-01-15 05:44 meskes * Applied patch by Boszormenyi Zoltan<zb@cybertec.at> to add DESCRIBE [OUTPUT] statement to ecpg. 2010-01-15 04:18 heikki * Introduce Streaming Replication.This includes two new kinds of postmaster processes, walsenders andwalreceiver. Walreceiveris responsible for connecting to theprimary server and streaming WAL to disk, while walsender runs inthe primaryserver and streams WAL from disk to the client.Documentation still needs work, but the basics are there. We willprobablypull the replication section to a new chapter later on, aswell as the sections describing file-based replication.But let'sdo that as a separate patch, so that it's easier to see what hasbeen added/changed. This patch alsoadds a new section to thechapter about FE/BE protocol, documenting the protocol used bywalsender/walreceivxer.Bump catalogversion because of two new functions,pg_last_xlog_receive_location() and pg_last_xlog_replay_location(),for monitoringthe progress of replication.Fujii Masao, with additional hacking by me 2010-01-14 11:31 teodor * Addpoint_ops opclass for GiST. 2010-01-13 04:06 meskes * Applied Zoltan's patch tomake char the default sqlda type.Given that undefined types are handled as character strings anywaythetype translation function can simply return the correcpondingECPGt_char type. 2010-01-13 03:41 meskes * Fix SQL3type return value.For non-SQL3 types ecpg used to return -Oid. This will break ifthere are enough Oids to fillthe namespace. Therefore we play itsafe and return 0 if there is no Oid->SQL3 tyoe mapping available. 2010-01-11 21:42 momjian * Please tablespacedirectories in their own subdirectory so pg_migrator can upgradeclusters without renaming the tablespacedirectories. Newdirectory structure format is, e.g.: $PGDATA/pg_tblspc/20981/PG_8.5_201001061/719849/83292814 2010-01-11 13:39 tgl * Add some simple support anddocumentation for using process-specific oom_adj settings toprevent the postmaster from beingOOM-killed on Linux systems.Alex Hunsaker and Tom Lane 2010-01-08 21:40 adunstan * Tidy upand refactor plperl.c.- Changed MULTIPLICITY check from runtime to compiletime. Noloads the large Config module. - Changed plperl_init_interp() toreturn new interp and not alter the global interp_state - Movedplperl_safe_init()call into check_interp(). - Removedplperl_safe_init_done state variable as interp_state now coversthatrole. - Changed plperl_create_sub() to take aplperl_proc_desc argument. - Simplified return value handling inplperl_create_sub. - Changed perl.com link in the docs to perl.organd tweaked wording to clarify that require, not use,is what'sblocked. - Moved perl code in large multi-line C string literalmacros out to plc_*.pl files. - Addeda test2macro.pl utilityto convert the plc_*.pl files to macros in a perlchunks.h filewhich is #included - Simplifedplperl_safe_init() slightly -Optimized pg_verifymbstr calls to avoid unneeded strlen()s.Patch from Tim Bunce, withminor editing from me. 2010-01-07 19:38 itagaki * Add buffer access counters topg_stat_statements.This uses the same infrastructure with EXPLAIN BUFFERS to support{shared|local}_blks_{hit|read|written}andtemp_blks_{read|written}columns in the pg_stat_statements view. The dumpedfile format alsoupdated.Thanks to Robert Haas for the review. 2010-01-07 15:17 tgl * Fix 3-parameterform of bit substring() to throw error for negative length, asrequired by SQL standard. 2010-01-06 23:53 tgl * Remove all thespecial-case code for INT64_IS_BUSTED, per decision that we're notgoing to support that anymore.I did keepthe 64-bit-CRC-with-32-bit-arithmetic code, since it hasa performance excuse to live. It's a bit moot since that's allifdef'dout, of course. 2010-01-06 20:41 tgl * Make configure check the version ofPerl we're building with, and reject versions < 5.8. Also, ifthere's no Perl, emita warning informing the user that he won't beable to build from a CVS pull. This is exactly the same treatmentwe giveBison and Perl, and for the same reasons. 2010-01-06 19:25 tgl * Alter the configure script to failimmediately if the C compiler does not provide a working 64-bitinteger datatype. Asrecently noted, we've been broken on suchplatforms since early in the 8.4 development cycle. Since it tooknearly two yearsfor anyone to even notice, it seems that therationale for continuing to support such platforms has reached thepointof non-existence. Rather than thrashing around to try tomake it work again, we'll just admit up front that thisno longerworks.Back-patch to 8.4 since that branch is also broken.We should go around to remove INT64_IS_BUSTED support,but just inHEAD, so that seems like material for a separate commit. 2010-01-06 00:31 itagaki * Support rewritten-based fullvacuum as VACUUM FULL. Traditional VACUUM FULL was renamed toVACUUM FULL INPLACE. Also addeda new option -i, --inplace forvacuumdb to perform FULL INPLACE vacuuming.Since the new VACUUM FULL uses CLUSTER infrastructure,we cannotuse it for system tables. VACUUM FULL for system tables always fallback into VACUUM FULL INPLACEsilently.Itagaki Takahiro, reviewed by Jeff Davis and Simon Riggs. 2010-01-05 20:12 itagaki * Add verification of variable names inpgbench.Variables must consist of only alphabets, numerals and underscores. We hadallowed to set variables with invalid names, but could notrefer them in queries.Thanks to Robert Haas for the review. 2010-01-05 16:53 rhaas * Support ALTER TABLESPACEname SET/RESET ( tablespace_options ).This patch only supports seq_page_cost and random_page_costasparameters, but it provides the infrastructure to scalably supportmany more. In particular, we may wantto add support foreffective_io_concurrency, but I'm leaving that as future work fornow.Thanks to Tom Lane for designhelp and Alvaro Herrera for thereview. 2010-01-05 11:38 meskes * Applied patch by Boszormenyi Zoltan<zb@cybertec.at> to add sqlda support to ecpg in both native andcompatiblity mode. 2010-01-05 08:31 mha * Move the default configuration forthe MSVC build system to config_default.pl, and allow usingconfig.pl to override thedefaults. config.pl is removed from therepository, so changes there will no longer show up when doingdiff, and will notprevent switching branches and such things.config.pl would normally be used to override single values, but ifan old-styleconfig.pl is read, it will override the entire defaultconfiguration, making it backwards compatible. 2010-01-04 20:06 tgl * Get rid ofthe need for manual maintenance of the initial contents ofpg_attribute, by having genbki.pl derive the informationfrom thevarious catalog header files. This greatly simplifies modificationof the "bootstrapped" catalogs.Thispatch finally kills genbki.sh and Gen_fmgrtab.sh; we now relyentirely on Perl scripts for those build steps. To avoid creatinga Perl build dependency where there was not one before, the outputfiles generated by these scriptsare now treated as distpreptargets, ie, they will be built and shipped in tarballs. But youwill need a reasonablymodern Perl (probably at least 5.6) if youwant to build from a CVS pull.The changes to the MSVC build process areuntested, and may wellbreak --- we'll soon find out from the buildfarm.John Naylor, based on ideas from Robert Haas andothers 2010-01-04 15:29 adunstan * Check values passed back from PLPerl tothe database, via function return, trigger tuple modification orSPI call, to ensurethey are valid in the server encoding. Alongthe way, replace uses of SvPV(foo, PL_na) with SvPV_nolen(foo) asrecommendedin the perl docs. Bug report from Hannu Krosing. 2010-01-04 11:34 tgl * Improve PGXSmakefile system to allow the module's makefile to specify where toinstall DATA and DOCS files. This is mainlyintended to allowversioned installation, eg, install into contrib/fooM.N/ ratherthan directly into contrib/.Mark Cave-Ayland 2010-01-04 07:50 heikki * Write an end-of-backup WAL record atpg_stop_backup(), and wait for it at recovery instead of readingthe backup historyfile. This is more robust, as it stops you fromprematurely starting up an inconsisten cluster if the backuphistoryfile is lost for some reason, or if the base backup wasnever finished with pg_stop_backup().This also pavesthe way for a simpler streaming replication patch,which doesn't need to care about backup history files anymore.Thebackup history file is still created and archived as before,but it's not used by the system anymore. It's justforinformational purposes now.Bump PG_CONTROL_VERSION as the location of the backup startpoint isnow written to a newfield in pg_control, and catversion becauseinitdb is requiredOriginal patch by Fujii Masao per Simon's idea, with furtherfixesby me. 2010-01-03 21:44 tgl * When estimating the selectivity of aninequality "column > constant" or "column < constant", and thecomparison value isin the first or last histogram bin or outsidethe histogram entirely, try to fetch the actual column min or maxvalue usingan index scan (if there is an index on the column). Ifsuccessful, replace the lower or upper histogram bound with thatvaluebefore carrying on with the estimate. This limits theestimation error caused by moving min/max values when thecomparisonvalue is close to the min or max. Per a complaint fromJosh Berkus.It is tempting to consider using this mechanismformergejoinscansel as well, but that would inject index fetches intomain-line join estimation not just endpointcases. I'm refrainingfrom that until we can get a better handle on the costs of doingthis type of lookup. 2010-01-02 15:59 tgl * Fix similar_escape() to convertparentheses to non-capturing style. This is needed to avoidunwanted interference with SUBSTRINGbehavior, as per bug #5257from Roman Kononov. Also, add some basic intelligence aboutcharacter classes (bracketexpressions) since we now have severalbehaviors that aren't appropriate inside a character class.As with the previouspatch in this area, I'm reluctant toback-patch since it might affect applications that are relying onthe prior behavior. 2010-01-02 07:18 mha * Support 64-bit shared memory when building on 64-bit Windows.Tsutomu Yamada 2010-01-01 16:53 tgl * Support "x IS NOT NULL"clauses as indexscan conditions. This turns out to be just a minorextension of the previous patchthat made "x IS NULL" indexable,because we can treat the IS NOT NULL condition as if it were "x <NULL" or "x > NULL"(depending on the index's NULLS FIRST/LASToption), just like IS NULL is treated like "x = NULL". Aside fromany possibleusefulness in its own right, this is an importantimprovement for index-optimized MAX/MIN aggregates: it is nowreliablypossible to get a column's min or max value cheaply, evenwhen there are a lot of nulls cluttering the interestingend of theindex. 2010-01-01 12:34 mha * Detect a64-bit build environment on Windows, and generate the appropriateproject files.Based on the work of Tsutomu Yamada,but much refactored. 2010-01-01 09:57 mha * Make the win32putenv() override update *all* present versions of the MSVCRxxruntime, not just the current + Visual Studio6 (MSVCRT). Clearlythere can be an almost unlimited number of runtimes loaded at thesame time.Per report from HiroshiInoue 2009-12-31 14:41 tgl * Redefine Datum as uintptr_t, instead ofunsigned long.This is more in keeping with modern practice, and is a first steptowardsporting to Win64 (which has sizeof(pointer) >sizeof(long)).Tsutomu Yamada, Magnus Hagander, Tom Lane 2009-12-30 15:32 tgl * Revise pgstat'stracking of tuple changes to improve the reliability of decisionsabout when to auto-analyze.The previouscode depended on n_live_tuples + n_dead_tuples -last_anl_tuples, where all three of these numbers could be badestimatesfrom ANALYZE itself. Even worse, in the presence of asteady flow of HOT updates and matching HOT-tuple reclamations,auto-analyzemight never trigger at all, even if all three numbersare exactly right, because n_dead_tuples couldhold steady.To fix, replace last_anl_tuples with an accurately tracked count ofthe total number of committed tuple inserts+ updates + deletessince the last ANALYZE on the table. This can still be compared tothe same threshold as before,but it's much more trustworthy thanthe old computation. Tracking this requires one moreintra-transaction counterper modified table within backends, butno additional memory space in the stats collector. There probablyisn't anymeasurable speed difference; if anything it might be abit faster than before, since I was able to eliminate someper-tuplearithmetic operations in favor of adding sums once per(sub)transaction.Also, simplify the logic around pgstatvacuum and analyze reportingmessages by not trying to fold VACUUM ANALYZE into a single pgstatmessage.The originalthought behind this patch was to allow scheduling ofanalyzes on parent tables by artificially inflating theirchanges_since_analyzecount. I've left that for a separate patchsince this change seems to stand on its own merit. 2009-12-29 15:11 tgl * Add the ability to store inheritance-tree statistics inpg_statistic, and teach ANALYZE to compute such stats for tablesthathave subclasses. Per my proposal of yesterday.autovacuum still needs to be taught about running ANALYZE on parenttableswhen their subclasses change, but the feature is useful evenwithout that. 2009-12-26 11:55 momjian * Zero-label enums:Allow enums to be created with zero labels, for use during binaryupgrade. 2009-12-23 12:41 tgl * Allow the index name to beomitted in CREATE INDEX, causing the system to choose an index namethe same as it would do foran unnamed index constraint. (Myrecent changes to the index naming logic have helped to ensure thatthis will be a reasonablechoice.) Per a suggestion from Peter.A necessary side-effect is to promote CONCURRENTLY totype_func_name_keywordstatus, ie, it can't be a table/column/indexname anymore unless quoted. This is not all bad, sincewe haveheard more than once of people typing CREATE INDEX CONCURRENTLY ONfoo (...) and getting a normal index buildof an index named"concurrently", which was not what they wanted. Now this syntaxwill result in a concurrent build ofan index with system-chosenname; which they can rename afterwards if they want something else. 2009-12-23 11:43 tgl * Remove code that attempted torename index columns to keep them in sync with their underlyingtable columns. That codewas not bright enough to cope withcollision situations (ie, new name conflicts with some other columnof the index). Since there is no functional reason to do this atall, trying to upgrade the logic to be bulletproof doesn't seemworth thetrouble.This change means that both the index name and the column names ofan index are set when it's created, and won'tbe automaticallychanged when the underlying table columns are renamed. NeatnikDBAs are still free to rename themmanually, of course. 2009-12-23 08:27 mha * Add basic build supportfor Visual Studio 2008, without resorting to generating the buildfiles for 2005 and then convertingthem. 2009-12-22 21:35 tgl * Adjust naming of indexesand their columns per recent discussion.Index expression columns are now named after the FigureColnameresultfor their expressions, rather than always being"pg_expression_N". Digits are appended to this name ifneeded tomake the column name unique within the index. (That happens forregular columns too, thus fixing the old problemthat CREATE INDEXfooi ON foo (f1, f1) fails. Before exclusion indexes there was noreal reason to do such a thing,but now maybe there is.)Default names for indexes and associated constraints now includethe column names of all theircolumns, not only the first one as inprevious practice. (Of course, this will be truncated as needed tofit in NAMEDATALEN. Also, pkey indexes retain the historicalbehavior of not naming specific columns at all.)An example of the results:regression=#create table foo (f1 int, f2 text, regression(#exclude (f1 with =, lower(f2) with =)); NOTICE: CREATETABLE /EXCLUDE will create implicit index "foo_f1_lower_exclusion" fortable "foo" CREATE TABLE regression=# \d foo_f1_lower_exclusionIndex"public.foo_f1_lower_exclusion" Column | Type |Definition --------+---------+------------ f1 | integer | f1 lower | text | lower(f2) btree, for table "public.foo" 2009-12-22 18:54 tgl * Disallow comments on columns of relation types other than tables,views, and composite types, which are the only relkindsfor whichpg_dump support exists for dumping column comments. There is noobvious usefulness for comments on columnsof sequences or toasttables; and while comments on index columns might have some value,it's not worth the risk ofcompatibility problems due to possiblechanges in the algorithm for assigning names to index columns. Perdiscussion.Inconsequence, remove now-dead code for copying such comments inCREATE TABLE LIKE.
pgsql-hackers by date: