{"push_id":2438424154,"size":5,"distinct_size":1,"ref":"refs/heads/commitfest/17/1468","head":"589399b57916508956e84a21cc40baa25533bff6","before":"7b0cd10b121ae4ec30f1fb30c82f91b8fb7708c3","commits":[{"sha":"442accc3fe0cd556de40d9d6c776449e82254763","author":{"name":"Tom Lane","email":"9ca635a44fdf5aa326758d8d245579b9ae84653c@sss.pgh.pa.us"},"message":"Allow memory contexts to have both fixed and variable ident strings.\n\nOriginally, we treated memory context names as potentially variable in\nall cases, and therefore always copied them into the context header.\nCommit 9fa6f00b1 rethought this a little bit and invented a distinction\nbetween fixed and variable names, skipping the copy step for the former.\nBut we can make things both simpler and more useful by instead allowing\nthere to be two parts to a context's identification, a fixed \"name\" and\nan optional, variable \"ident\".  The name supplied in the context create\ncall is now required to be a compile-time-constant string in all cases,\nas it is never copied but just pointed to.  The \"ident\" string, if\nwanted, is supplied later.  This is needed because typically we want\nthe ident to be stored inside the context so that it's cleaned up\nautomatically on context deletion; that means it has to be copied into\nthe context before we can set the pointer.\n\nThe cost of this approach is basically just an additional pointer field\nin struct MemoryContextData, which isn't much overhead, and is bought\nback entirely in the AllocSet case by not needing a headerSize field\nanymore, since we no longer have to cope with variable header length.\nIn addition, we can simplify the internal interfaces for memory context\ncreation still further, saving a few cycles there.  And it's no longer\ntrue that a custom identifier disqualifies a context from participating\nin aset.c's freelist scheme, so possibly there's some win on that end.\n\nAll the places that were using non-compile-time-constant context names\nare adjusted to put the variable info into the \"ident\" instead.  This\nallows more effective identification of those contexts in many cases;\nfor example, subsidary contexts of relcache entries are now identified\nby both type (e.g. \"index info\") and relname, where before you got only\none or the other.  Contexts associated with PL function cache entries\nare now identified more fully and uniformly, too.\n\nI also arranged for plancache contexts to use the query source string\nas their identifier.  This is basically free for CachedPlanSources, as\nthey contained a copy of that string already.  We pay an extra pstrdup\nto do it for CachedPlans.  That could perhaps be avoided, but it would\nmake things more fragile (since the CachedPlanSource is sometimes\ndestroyed first).  I suspect future improvements in error reporting will\nrequire CachedPlans to have a copy of that string anyway, so it's not\nclear that it's worth moving mountains to avoid it now.\n\nThis also changes the APIs for context statistics routines so that the\ncontext-specific routines no longer assume that output goes straight\nto stderr, nor do they know all details of the output format.  This\nis useful immediately to reduce code duplication, and it also allows\nfor external code to do something with stats output that's different\nfrom printing to stderr.\n\nThe reason for pushing this now rather than waiting for v12 is that\nit rethinks some of the API changes made by commit 9fa6f00b1.  Seems\nbetter for extension authors to endure just one round of API changes\nnot two.\n\nDiscussion: https://postgr.es/m/CAB=Je-FdtmFZ9y9REHD7VsSrnCkiBhsA4mdsLKSPauwXtQBeNA@mail.gmail.com","distinct":false,"url":"https://api.github.com/repos/postgresql-cfbot/postgresql/commits/442accc3fe0cd556de40d9d6c776449e82254763"},{"sha":"ef1978d6ed1e4defe18d250226460409e6cd5447","author":{"name":"Tom Lane","email":"9ca635a44fdf5aa326758d8d245579b9ae84653c@sss.pgh.pa.us"},"message":"Update pgindent's typedefs blacklist, and make it easier to adjust.\n\nIt seems that all buildfarm members are now using the <stdbool.h> code\npath, so that none of them report \"bool\" as a typedef.  We still need it\nto be treated that way, so adjust pgindent to force that whether or not\nit's in the given list.\n\nAlso, the recent introduction of LLVM infrastructure has caused the\nappearance of some typedef names that we definitely *don't* want\ntreated as typedefs, such as \"string\" and \"abs\".  Extend the existing\nblacklist to include these.  (Additions based on comparing v10's\ntypedefs list to what the buildfarm is currently emitting.)\n\nRearrange the code so that the lists of whitelisted/blacklisted\nnames are a bit easier to find and modify.\n\nAndrew Dunstan and Tom Lane\n\nDiscussion: https://postgr.es/m/28690.1521912334@sss.pgh.pa.us","distinct":false,"url":"https://api.github.com/repos/postgresql-cfbot/postgresql/commits/ef1978d6ed1e4defe18d250226460409e6cd5447"},{"sha":"16828d5c0273b4fe5f10f42588005f16b415b2d8","author":{"name":"Andrew Dunstan","email":"6b7c097d961f68685fc978cf91eeae17be6cbb45@dunslane.net"},"message":"Fast ALTER TABLE ADD COLUMN with a non-NULL default\n\nCurrently adding a column to a table with a non-NULL default results in\na rewrite of the table. For large tables this can be both expensive and\ndisruptive. This patch removes the need for the rewrite as long as the\ndefault value is not volatile. The default expression is evaluated at\nthe time of the ALTER TABLE and the result stored in a new column\n(attmissingval) in pg_attribute, and a new column (atthasmissing) is set\nto true. Any existing row when fetched will be supplied with the\nattmissingval. New rows will have the supplied value or the default and\nso will never need the attmissingval.\n\nAny time the table is rewritten all the atthasmissing and attmissingval\nsettings for the attributes are cleared, as they are no longer needed.\n\nThe most visible code change from this is in heap_attisnull, which\nacquires a third TupleDesc argument, allowing it to detect a missing\nvalue if there is one. In many cases where it is known that there will\nnot be any (e.g.  catalog relations) NULL can be passed for this\nargument.\n\nAndrew Dunstan, heavily modified from an original patch from Serge\nRielau.\nReviewed by Tom Lane, Andres Freund, Tomas Vondra and David Rowley.\n\nDiscussion: https://postgr.es/m/31e2e921-7002-4c27-59f5-51f08404c858@2ndQuadrant.com","distinct":false,"url":"https://api.github.com/repos/postgresql-cfbot/postgresql/commits/16828d5c0273b4fe5f10f42588005f16b415b2d8"},{"sha":"b4013b8e4a271816ba87aa56f46dbc04a083d962","author":{"name":"Andres Freund","email":"c6cbfe878b4ee67646e7630734db67f536518d54@anarazel.de"},"message":"Add catversion bump missed in 16828d5c0.\n\nGiven that pg_attribute changed its layout...","distinct":false,"url":"https://api.github.com/repos/postgresql-cfbot/postgresql/commits/b4013b8e4a271816ba87aa56f46dbc04a083d962"},{"sha":"589399b57916508956e84a21cc40baa25533bff6","author":{"name":"Commitfest Bot","email":"aab6a594935fe5db0d690bc154b19f642bfbe9d7@cputube.org"},"message":"[CF 17/1468] Parallel Aggregates for string_agg and array_agg\n\nThis commit was automatically generated by cfbot at commitfest.cputube.org.\nIt is based on patches submitted to the PostgreSQL mailing lists and\nregistered in the PostgreSQL Commitfest application.\n\nThis branch will be overwritten each time a new patch version is posted to\nthe email thread or the master branch changes.\n\nCommitfest entry: https://commitfest.postgresql.org/17/1468\nPatch(es): https://www.postgresql.org/message-id/CAKJS1f9oTWG4oc7B2WfDhT11KhxeV1miLQ%2BPzB6hY%3DiJeHM28A%40mail.gmail.com\nAuthor(s): David Rowley","distinct":true,"url":"https://api.github.com/repos/postgresql-cfbot/postgresql/commits/589399b57916508956e84a21cc40baa25533bff6"}]}
{"actor":{"display_login":"postgresql-cfbot"}}