summaryrefslogtreecommitdiff
path: root/src/include
AgeCommit message (Collapse)Author
1999-08-23Remove bogus code in oper_exact --- if it didn't find an exactTom Lane
match then it tried for a self-commutative operator with the reversed input data types. This is pretty silly; there could never be such an operator, except maybe in binary-compatible-type scenarios, and we have oper_inexact for that. Besides which, the oprsanity regress test would complain about such an operator. Remove nonfunctional code and simplify routine calling convention accordingly.
1999-08-22Further sort-order twiddling in optimizer: be smart aboutTom Lane
case where ORDER BY and GROUP BY request the same sort order.
1999-08-22Further planner/optimizer cleanups. Move all set_tlist_referencesTom Lane
and fix_opids processing to a single recursive pass over the plan tree executed at the very tail end of planning, rather than haphazardly here and there at different places. Now that tlist Vars do not get modified until the very end, it's possible to get rid of the klugy var_equal and match_varid partial-matching routines, and just use plain equal() throughout the optimizer. This is a step towards allowing merge and hash joins to be done on expressions instead of only Vars ...
1999-08-21Major revision of sort-node handling: push knowledge of queryTom Lane
sort order down into planner, instead of handling it only at the very top level of the planner. This fixes many things. An explicit sort is now avoided if there is a cheaper alternative (typically an indexscan) not only for ORDER BY, but also for the internal sort of GROUP BY. It works even when there is no other reason (such as a WHERE condition) to consider the indexscan. It works for indexes on functions. It works for indexes on functions, backwards. It's just so cool... CAUTION: I have changed the representation of SortClause nodes, therefore THIS UPDATE BREAKS STORED RULES. You will need to initdb.
1999-08-16Major planner/optimizer revision: get rid of PathOrder node type,Tom Lane
store all ordering information in pathkeys lists (which are now lists of lists of PathKeyItem nodes, not just lists of lists of vars). This was a big win --- the code is smaller and IMHO more understandable than it was, even though it handles more cases. I believe the node changes will not force an initdb for anyone; planner nodes don't show up in stored rules.
1999-08-16Add get_func_rettype() to general-use lsyscache routines,Tom Lane
since it's now needed in both optimizer and parser.
1999-08-12Clean up optimizer's handling of indexscan quals that need to beTom Lane
commuted (ie, the index var appears on the right). These are now handled the same way as merge and hash join quals that need to be commuted: the actual reversing of the clause only happens if we actually choose the path and generate a plan from it. Furthermore, the clause is only reversed in the 'indexqual' field of the plan, not in the 'indxqualorig' field. This allows the clause to still be recognized and removed from qpquals of upper level join plans. Also, simplify and generalize match_clause_to_indexkey; now it recognizes binary-compatible indexes for join as well as restriction clauses.
1999-08-10Minor cleanups and code beautification; eliminate someTom Lane
routines that are now dead code.
1999-08-09> > Prevent sorting if result is already sortedBruce Momjian
> > > > was implemented by Jan Wieck. > > His work is for ascending order cases. > > > > Here is a patch to prevent sorting also in descending > > order cases. > > Because I had already changed _bt_first() to position > > backward correctly before v6.5,this patch would work. > > Hiroshi Inoue Inoue@tpf.co.jp
1999-08-09Move get_attdisbursion to lsyscache. Clean up get_typdefault.Tom Lane
1999-08-09Update comments about attdisbursion. NO code change.Tom Lane
1999-08-09Clean up routines in setrefs.c by replacing individual treeTom Lane
walking logic with expression_tree_walker/mutator calls.
1999-08-09Create a standardized expression_tree_mutator support routineTom Lane
to go along with expression_tree_walker. (_walker is not suitable for routines that need to alter the tree structure significantly.) Other minor cleanups in clauses.c.
1999-08-08Fix nbtree's failure to clear BTScans list during xact abort.Tom Lane
Also, move responsibility for calling vc_abort into main xact.c list of things-to-call-at-abort. What in the world was it doing down inside of TransactionIdAbort()?
1999-08-06Revise generation of hashjoin paths: generate one path perTom Lane
hashjoinable clause, not one path for a randomly-chosen element of each set of clauses with the same join operator. That is, if you wrote SELECT ... WHERE t1.f1 = t2.f2 and t1.f3 = t2.f4, and both '=' ops were the same opcode (say, all four fields are int4), then the system would either consider hashing on f1=f2 or on f3=f4, but it would *not* consider both possibilities. Boo hiss. Also, revise estimation of hashjoin costs to include a penalty when the inner join var has a high disbursion --- ie, the most common value is pretty common. This tends to lead to badly skewed hash bucket occupancy and way more comparisons than you'd expect on average. I imagine that the cost calculation still needs tweaking, but at least it generates a more reasonable plan than before on George Young's example.
1999-08-05Revise parse_coerce() to handle coercion of int and floatTom Lane
constants, not only string constants, at parse time. Get rid of parser_typecast2(), which is bogus and redundant...
1999-08-01First step in fixing selectivity-estimation code. eqsel andTom Lane
neqsel now behave as per my suggestions in pghackers a few days ago. selectivity for < > <= >= should work OK for integral types as well, but still need work for nonintegral types. Since these routines have never actually executed before :-(, this may result in some significant changes in the optimizer's choices of execution plans. Let me know if you see any serious misbehavior. CAUTION: THESE CHANGES REQUIRE INITDB. pg_statistic table has changed.
1999-07-31Add comments for attdisbursion field --- NO code change.Tom Lane
1999-07-30Further cleanups of indexqual processing: simplify controlTom Lane
logic in indxpath.c, avoid generation of redundant indexscan paths for the same relation and index.
1999-07-27Correct bug in best_innerjoin(): it should check all theTom Lane
rels that the inner path needs to join to, but it was only checking for the first one. Failure could only have been observed with an OR-clause that mentions 3 or more tables, and then only if the bogus path was actually selected as cheapest ...
1999-07-27First cut at doing LIKE/regex indexing optimization inTom Lane
optimizer rather than parser. This has many advantages, such as not getting fooled by chance uses of operator names ~ and ~~ (the operators are identified by OID now), and not creating useless comparison operations in contexts where the comparisons will not actually be used as indexquals. The new code also recognizes exact-match LIKE and regex patterns, and produces an = indexqual instead of >= and <=. This change does NOT fix the problem with non-ASCII locales: the code still doesn't know how to generate an upper bound indexqual for non-ASCII collation order. But it's no worse than before, just the same deficiency in a different place... Also, dike out loc_restrictinfo fields in Plan nodes. These were doing nothing useful in the absence of 'expensive functions' optimization, and they took a considerable amount of processing to fill in.
1999-07-25Further work on planning of indexscans. Cleaned up interfacesTom Lane
to index_selectivity so that it can be handed an indexqual clause list rather than a bunch of assorted derivative data.
1999-07-25Remove 'restrictinfojoinid' field from RestrictInfo nodes.Tom Lane
The only place it was being used was as temporary storage in indxpath.c, and the logic was wrong: the same restrictinfo node could get chosen to carry the info for two different joins. Right fix is to return a second list of unjoined-relids parallel to the list of clause groups.
1999-07-24Clean up messy clause-selectivity code in clausesel.c; repair bugTom Lane
identified by Hiroshi (incorrect cost attributed to OR clauses after multiple passes through set_rest_selec()). I think the code was trying to allow selectivities of OR subclauses to be passed in from outside, but noplace was actually passing any useful data, and set_rest_selec() was passing wrong data. Restructure representation of "indexqual" in IndexPath nodes so that it is the same as for indxqual in completed IndexScan nodes: namely, a toplevel list with an entry for each pass of the index scan, having sublists that are implicitly-ANDed index qual conditions for that pass. You don't want to know what the old representation was :-( Improve documentation of OR-clause indexscan functions. Remove useless 'notclause' field from RestrictInfo nodes. (This might force an initdb for anyone who has stored rules containing RestrictInfos, but I do not think that RestrictInfo ever appears in completed plans.)
1999-07-20Reverse out cache changes that are not ready yet.Bruce Momjian
1999-07-20Use -ieee alpha flag for gcc and egcs only.Bruce Momjian
1999-07-19linux/sparc cleanupBruce Momjian
1999-07-19Fix for linux/sparc.Bruce Momjian
1999-07-19Fix #if if.Bruce Momjian
1999-07-19Install new alignment code to use MAXALIGN rather than DOUBLEALIGN whereBruce Momjian
approproate.
1999-07-19Re-add getopt.h check, remove NT-specific tests for it.Bruce Momjian
1999-07-19Remove getopt configure check.Bruce Momjian
1999-07-19Put back mistakenly removed configure test for HAVE_NETINET_IN_H.Tom Lane
1999-07-19Rewrite parser's handling of INSERT ... SELECT so that processingTom Lane
of the SELECT part of the statement is just like a plain SELECT. All INSERT-specific processing happens after the SELECT parsing is done. This eliminates many problems, e.g. INSERT ... SELECT ... GROUP BY using the wrong column labels. Ensure that DEFAULT clauses are coerced to the target column type, whether or not stored clause produces the right type. Substantial cleanup of parser's array support.
1999-07-18Add getopt test.Bruce Momjian
1999-07-18Fix configure problem.Bruce Momjian
1999-07-18Update for 6.6.Bruce Momjian
1999-07-18configure cleanupBruce Momjian
1999-07-18configure cleanupBruce Momjian
1999-07-18Update configure include checks.Bruce Momjian
1999-07-18Update includes from configureBruce Momjian
1999-07-18Improve commentary about ArrayRef and ResTarget nodes.Tom Lane
1999-07-17 Move some system includes into c.h, and remove duplicates.Bruce Momjian
1999-07-17Fix for multi-byte includes.Bruce Momjian
1999-07-17More config.h cleanups.Bruce Momjian
1999-07-16More cleanupBruce Momjian
1999-07-15Change #include's to use <> and "" as appropriate.Bruce Momjian
1999-07-15Cleanups.Bruce Momjian
1999-07-15Clean up #include in /include directory. Add scripts for checking includes.Bruce Momjian
1999-07-14Cleanup of /include #include's, for 6.6 only.Bruce Momjian