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:

Previous
From: Fujii Masao
Date:
Subject: Re: Streaming replication, and walsender during recovery
Next
From: Heikki Linnakangas
Date:
Subject: Re: Streaming replication on win32, still broken