summaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/selfuncs.c
AgeCommit message (Collapse)Author
2000-06-15Clean up #include's.Bruce Momjian
2000-06-14Big warnings cleanup for Solaris/GCC. Down to about 40 now, butPeter Eisentraut
we'll get there one day. Use `cat' to create aclocal.m4, not `aclocal'. Some people don't have automake installed. Only run the autoconf rule in the top-level GNUmakefile if the invoker specified `make configure', don't run it automatically because of CVS timestamp skew.
2000-06-14I had overlooked the fact that some fmgr-callable functions return voidTom Lane
--- ie, they're only called for side-effects. Add a PG_RETURN_VOID() macro and use it where appropriate. This probably doesn't change the machine code by a single bit ... it's just for documentation.
2000-06-09Another round of updates for new fmgr, mostly in the datetime code.Tom Lane
2000-06-05Latest round of fmgr updates. All functions with bool,char, or int2Tom Lane
inputs have been converted to newstyle. This should go a long way towards fixing our portability problems with platforms where char and short parameters are passed differently from int-width parameters. Still more to do for the Alpha port however.
2000-05-30Third round of fmgr updates: eliminate calls using fmgr() andTom Lane
fmgr_faddr() in favor of new-style calls. Lots of cleanup of sloppy casts to use XXXGetDatum and DatumGetXXX ...
2000-05-28First round of changes for new fmgr interface. fmgr itself and theTom Lane
key call sites are changed, but most called functions are still oldstyle. An exception is that the PL managers are updated (so, for example, NULL handling now behaves as expected in plperl and plpgsql functions). NOTE initdb is forced due to added column in pg_proc.
2000-05-26Reduce eqsel()'s fudge-factor for estimating the frequency of valuesTom Lane
other than the most common value in a column. We had had 0.5, make it 0.1 to make it more likely that an indexscan will be chosen. Really need better statistics instead, but this should stem the bleeding meanwhile ...
2000-04-16Add new selectivity estimation functions for pattern-matching operatorsTom Lane
(LIKE and regexp matches). These are not yet referenced in pg_operator, so by default the system will continue to use eqsel/neqsel. Also, tweak convert_to_scalar() logic so that common prefixes of strings are stripped off, allowing better accuracy when all strings in a table share a common prefix.
2000-04-12Ye-old pgindent run. Same 4-space tabs.Bruce Momjian
2000-04-09Further tweaking of indexscan cost estimates.Tom Lane
2000-03-30Tweak indexscan cost estimation: round estimated # of tuples visited upTom Lane
to next integer. Previously, if selectivity was small, we could compute very tiny scan cost on the basis of estimating that only 0.001 tuple would be fetched, which is silly. This naturally led to some rather silly plans...
2000-03-23Improve selectivity estimation involving string constants: pay attentionTom Lane
to more than one character, and try to do the right thing in non-ASCII locales.
2000-03-20Reverse out BYTEA type coersion.Bruce Momjian
2000-03-20Update for BYTEAOID.Bruce Momjian
2000-03-20Add compatiblity information for bytea.Bruce Momjian
2000-02-26Add date and time datatype handling to convert_to_scalar. (I was waitingTom Lane
for Thomas to do the datetime consolidation before touching this, but it's done now...)
2000-02-16Make eqsel produce better results for boolean columns,Tom Lane
and make scalarltsel a little more forgiving at the boundaries of the known range of a column value.
2000-02-15New cost model for planning, incorporating a penalty for random pageTom Lane
accesses versus sequential accesses, a (very crude) estimate of the effects of caching on random page accesses, and cost to evaluate WHERE- clause expressions. Export critical parameters for this model as SET variables. Also, create SET variables for the planner's enable flags (enable_seqscan, enable_indexscan, etc) so that these can be controlled more conveniently than via PGOPTIONS. Planner now estimates both startup cost (cost before retrieving first tuple) and total cost of each path, so it can optimize queries with LIMIT on a reasonable basis by interpolating between these costs. Same facility is a win for EXISTS(...) subqueries and some other cases. Redesign pathkey representation to achieve a major speedup in planning (I saw as much as 5X on a 10-way join); also minor changes in planner to reduce memory consumption by recycling discarded Path nodes and not constructing unnecessary lists. Minor cleanups to display more-plausible costs in some cases in EXPLAIN output. Initdb forced by change in interface to index cost estimation functions.
2000-01-26Add:Bruce Momjian
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc to all files copyright Regents of Berkeley. Man, that's a lot of files.
2000-01-24First cut at making useful selectivity estimates for range queriesTom Lane
(ie, WHERE x > lowbound AND x < highbound). It's not very bright yet but it does something useful. Also, rename intltsel/intgtsel to scalarltsel/scalargtsel to reflect usage better. Extend convert_to_scalar to do something a little bit useful with string data types. Still need to make it do something with date/time datatypes, but I'll wait for Thomas's datetime unification dust to settle first. Eventually the routine ought not have any type-specific knowledge at all; it ought to be calling a type-dependent routine found via a pg_type column; but that's a task for another day.
2000-01-24Remove Ops parameter from STATRELID cache lookup, for Tom Lane andBruce Momjian
optimizer.
2000-01-23Replace SearchSysCacheGetAttribute with SysCacheGetAttr, which fetchesTom Lane
an attribute of a tuple previously fetched with SearchSysCacheTuple. This avoids a lot of redundant cache lookups, particularly in selfuncs.c. Also, remove SearchSysCacheStruct, which was unused and grotty.
2000-01-23First cut at unifying regular selectivity estimation with indexscanTom Lane
selectivity estimation wasn't right. This is better...
2000-01-22Revise handling of index-type-specific indexscan cost estimation, perTom Lane
pghackers discussion of 5-Jan-2000. The amopselect and amopnpages estimators are gone, and in their place is a per-AM amcostestimate procedure (linked to from pg_am, not pg_amop).
2000-01-15Fix a passel of problems with incorrect calls to typinput and typoutputTom Lane
functions, which would lead to trouble with datatypes that paid attention to the typelem or typmod parameters to these functions. In particular, incorrect code in pg_aggregate.c explains the platform-specific failures that have been reported in NUMERIC avg().
2000-01-15Fixed all elog related warnings, as well as a few others.Peter Eisentraut
2000-01-10Make number of args to a function configurable.Bruce Momjian
2000-01-09Another round of planner/optimizer work. This is just restructuring andTom Lane
code cleanup; no major improvements yet. However, EXPLAIN does produce more intuitive outputs for nested loops with indexscans now...
1999-11-25Add opid to selectivity function call.Bruce Momjian
1999-11-25Enable pg_statistic cache use.Bruce Momjian
1999-11-22Add system indexes to match all caches.Bruce Momjian
Make all system indexes unique. Make all cache loads use system indexes. Rename *rel to *relid in inheritance tables. Rename cache names to be clearer.
1999-09-18Mega-commit to make heap_open/heap_openr/heap_close take anTom Lane
additional argument specifying the kind of lock to acquire/release (or 'NoLock' to do no lock processing). Ensure that all relations are locked with some appropriate lock level before being examined --- this ensures that relevant shared-inval messages have been processed and should prevent problems caused by concurrent VACUUM. Fix several bugs having to do with mismatched increment/decrement of relation ref count and mismatched heap_open/close (which amounts to the same thing). A bogus ref count on a relation doesn't matter much *unless* a SI Inval message happens to arrive at the wrong time, which is probably why we got away with this sloppiness for so long. Repair missing grab of AccessExclusiveLock in DROP TABLE, ALTER/RENAME TABLE, etc, as noted by Hiroshi. Recommend 'make clean all' after pulling this update; I modified the Relation struct layout slightly. Will post further discussion to pghackers list shortly.
1999-09-09Repair error noticed by Roberto Cornacchia: selectivity codeTom Lane
was rejecting negative attnums as bogus, which of course they are not. Add code to get_attdisbursion to produce a useful value for OID attribute, since VACUUM does not store stats for system attributes. Also, repair bug that's been in eqjoinsel for a long time: it was taking the max of the two columns' disbursions, whereas it should use the min.
1999-08-21Ooops ... I had left some test coding in selfuncs.c thatTom Lane
failed on 'field < textconstant' ...
1999-08-09Store -1 in attdisbursion to signal 'no duplicates in column'.Tom Lane
Centralize att_disbursion readout logic.
1999-08-02Further selectivity-estimation work. Speed up eqsel()Tom Lane
(it should just call the given operator, not look up an = operator). Fix intltsel() so that all numeric data types are converted to double before trying to estimate where the given comparison value is in the known range of column values. intltsel() still needs work, or replacement, for non-numeric data types ... but for nonintegral numeric types it should now be delivering reasonable estimates.
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-17 Move some system includes into c.h, and remove duplicates.Bruce Momjian
1999-07-16Final cleanup.Bruce Momjian
1999-07-16Update #include cleanupsBruce Momjian
1999-07-15Remove unused #includes in *.c files.Bruce Momjian
1999-07-15Clean up #include in /include directory. Add scripts for checking includes.Bruce Momjian
1999-06-19Temporarily disable error checks for missing selectivityTom Lane
functions, in order to work around oversight in 6.5 release: rtree index functions haven't got any. Mea culpa ...
1999-05-31Generate a more specific error message when an operator usedTom Lane
in an index doesn't have a restriction selectivity estimator.
1999-05-25pgindent run over code.Bruce Momjian
1999-05-10Change error messages to oids come out as %u and not %d. Change has noBruce Momjian
real affect now.
1999-03-18cleanupsBruce Momjian
1999-02-13Change my-function-name-- to my_function_name, and optimizer renames.Bruce Momjian
1999-02-05Fix for returning stack pointer from selectivity, from Bernard Frankpitt.Bruce Momjian