- 07 Sep, 2007 2 commits
- 
- 
Teodor Sigaev authored
- 
Tom Lane authoreddatabases, per gripe from hubert depesz lubaczewski. Patch from Simon Riggs. 
 
- 
- 06 Sep, 2007 1 commit
- 
- 
Tom Lane authorednull::char(3) to a simple Const node. (It already worked for non-null values, but not when we skipped evaluation of a strict coercion function.) This prevents loss of typmod knowledge in situations such as exhibited in bug #3598. Unfortunately there seems no good way to fix that bug in 8.1 and 8.2, because they simply don't carry a typmod for a plain Const node. In passing I made all the other callers of makeNullConst supply "real" typmod values too, though I think it probably doesn't matter anywhere else. 
 
- 
- 05 Sep, 2007 4 commits
- 
- 
Bruce Momjian authored< * Reduce XID consumption of read-only queries < < http://archives.postgresql.org/pgsql-hackers/2007-08/msg00516.php < < > * -Reduce XID consumption of read-only queries 
- 
Tom Lane authoredthat examine fields that could change under them. This is just to make really sure that when we are fetching a value 'only once', that's what actually happens. Possibly this is a bug that should be back-patched, but in the absence of solid evidence that it's needed, I won't bother. 
- 
Tom Lane authoredso that different prepared xacts can be told apart in the pg_locks view. Per suggestion from Florian. 
- 
Tom Lane authoredrows will normally never obtain an XID at all. We already did things this way for subtransactions, but this patch extends the concept to top-level transactions. In applications where there are lots of short read-only transactions, this should improve performance noticeably; not so much from removal of the actual XID-assignments, as from reduction of overhead that's driven by the rate of XID consumption. We add a concept of a "virtual transaction ID" so that active transactions can be uniquely identified even if they don't have a regular XID. This is a much lighter-weight concept: uniqueness of VXIDs is only guaranteed over the short term, and no on-disk record is made about them. Florian Pflug, with some editorialization by Tom. 
 
- 
- 04 Sep, 2007 4 commits
- 
- 
Andrew Dunstan authoredThis just provides text values, we're not exposing the underlying Oid representation. Catalog version bumped. 
- 
Michael Meskes authored
- 
Tom Lane authoredRandom other wordsmithing. 
- 
Tom Lane authoredinstead of the initial policy of whatever isalpha() likes. Per discussion. 
 
- 
- 03 Sep, 2007 6 commits
- 
- 
Tom Lane authored(Actually, it works as a plain statement too, but I didn't document that because it seems a bit useless.) Unify VariableResetStmt with VariableSetStmt, and clean up some ancient cruft in the representation of same. 
- 
Tom Lane authoredThis business with two independent build systems does kinda suck. 
- 
Tom Lane authoredinitcap style --- the vast majority of the existing descriptions do not use an initial cap. I didn't change places where the first word was all-cap. initdb not forced because this doesn't change any regression test results. 
- 
Tom Lane authoredbeen shown to be sensitive to concurrent autovacuum. Per Alvaro. 
- 
Tom Lane authoredoperator-family rewrite. I had mistakenly supposed that these could use the pg_amproc entries for text[] and inet[] respectively. However, binary compatibility of the underlying types does not make two array types binary compatible (since they must differ in the header field that gives the element type OID), and so the index support code doesn't consider those entries applicable. Add back the missing pg_amproc entries, and add an opr_sanity query to try to catch such mistakes in future. Per report from Gregory Maxwell. 
- 
Tom Lane authoredThere are still some loose ends: I didn't do anything about the SET FROM CURRENT idea yet, and it's not real clear whether we are happy with the interaction of SET LOCAL with function-local settings. The documentation is a bit spartan, too. 
 
- 
- 02 Sep, 2007 1 commit
- 
- 
Bruce Momjian authored
 
- 
- 01 Sep, 2007 3 commits
- 
- 
Bruce Momjian authored
- 
Bruce Momjian authored
- 
Tom Lane authoredregardless of the number of tuples involved, it's incorrect to skip it when memtupcount = 1; the number of cycles saved is minuscule anyway. An alternative solution would be to pull the state changes out to the call site in tuplesort_performsort, but keeping them near the corresponding changes in make_bounded_heap seems marginally cleaner. Noticed by Greg Stark. 
 
- 
- 31 Aug, 2007 12 commits
- 
- 
Tom Lane authoredthe number of rows likely to be produced by a query such as SELECT * FROM t1 LEFT JOIN t2 USING (key) WHERE t2.key IS NULL; What this is doing is selecting for t1 rows with no match in t2, and thus it may produce a significant number of rows even if the t2.key table column contains no nulls at all. 8.2 thinks the table column's null fraction is relevant and thus may estimate no rows out, which results in terrible plans if there are more joins above this one. A proper fix for this will involve passing much more information about the context of a clause to the selectivity estimator functions than we ever have. There's no time left to write such a patch for 8.3, and it wouldn't be back-patchable into 8.2 anyway. Instead, put in an ad-hoc test to defeat the normal table-stats-based estimation when an IS NULL test is evaluated at an outer join, and just use a constant estimate instead --- I went with 0.5 for lack of a better idea. This won't catch every case but it will catch the typical ways of writing such queries, and it seems unlikely to make things worse for other queries. 
- 
Bruce Momjian authoredSome alignment cleanups. 
- 
Bruce Momjian authored
- 
Tom Lane authoredgenerating the tuples has resjunk output columns. This is not possible for simple table scans but can happen when evaluating a whole-row Var for a view. Per example from Patryk Kordylewski. The problem exists back to 8.0 but I'm not going to risk back-patching further than 8.2 because of the many changes in this area. 
- 
Bruce Momjian authoredtool chains). 
- 
Bruce Momjian authored"index" entries for GIN/GiST. 
- 
Bruce Momjian authored
- 
Bruce Momjian authoredentire section, per Peter. 
- 
Bruce Momjian authoredentries in textsearch.sgml. 
- 
Tom Lane authoredprocessing routines. Per Heikki. 
- 
Bruce Momjian authoredolder SGML toolchains. 
- 
Tom Lane authoredsets for outer joins, in the light of bug #3588 and additional thought and experimentation. The original methodology was fatally flawed for nests of more than two outer joins: it got the relationships between adjacent joins right, but didn't always come to the right conclusions about whether a join could be interchanged with one two or more levels below it. This was largely caused by a mistaken idea that we should use the min_lefthand + min_righthand sets of a sub-join as the minimum left or right input set of an upper join when we conclude that the sub-join can't commute with the upper one. If there's a still-lower join that the sub-join *can* commute with, this method led us to think that that one could commute with the topmost join; which it can't. Another problem (not directly connected to bug #3588) was that make_outerjoininfo's processing-order-dependent method for enforcing outer join identity #3 didn't work right: if we decided that join A could safely commute with lower join B, we dropped all information about sub-joins under B that join A could perhaps not safely commute with, because we removed B's entire min_righthand from A's. To fix, make an explicit computation of all inner join combinations that occur below an outer join, and add to that the full syntactic relsets of any lower outer joins that we determine it can't commute with. This method gives much more direct enforcement of the outer join rearrangement identities, and it turns out not to cost a lot of additional bookkeeping. Thanks to Richard Harris for the bug report and test case. 
 
- 
- 30 Aug, 2007 3 commits
- 
- 
Bruce Momjian authored
- 
Tom Lane authoredcase, per Florian Pflug. Not back-patched since it's unclear that anyone but me still cares ... 
- 
Tatsuo Ishii authored
 
- 
- 29 Aug, 2007 4 commits
- 
- 
Bruce Momjian authored
- 
Bruce Momjian authoredto be more logical. 
- 
Bruce Momjian authoredthe main documentation, out of its own text search chapter. 
- 
Tom Lane authoredchecks for individual-table-size functions, since anyone in the database could get approximate values from pg_class.relpages anyway. Allow database-size to users with CONNECT privilege for the target database (note that this is granted by default). Allow tablespace-size if the user has CREATE privilege on the tablespace (which is *not* granted by default), or if the tablespace is the default tablespace for the current database (since we treat that as implicitly allowing use of the tablespace). 
 
-