summaryrefslogtreecommitdiff
path: root/src/backend/executor
Commit message (Collapse)AuthorAgeFilesLines
* The attached patch fixes some spelling mistakes, makes theBruce Momjian2002-06-252-43/+39
| | | | | | | | | | | | | comments on one of the optimizer functions a lot more clear, adds a summary of the recent KSQO discussion to the comments in the code, adds regression tests for the bug with sequence state Tom fixed recently and another reg. test, and removes some PostQuel legacy stuff: ExecAppend -> ExecInsert, ExecRetrieve -> ExecSelect, etc. This was changed because the elog() messages from this routine are user-visible, so we should be using the SQL terms. Neil Conway
* It seems that ExecInit/EndIndexScan is leaking some memory...Bruce Momjian2002-06-231-1/+5
| | | | | | | | | | | | | For example, if I run a query, that uses an index scan, and call MemoryContextSt ats (CurrentMemoryContext) before ExecutorStart() and after ExecutorEnd() in ProcessQuery(), I am consistently see ing that the 'after' call shows 256 bytes more used, then 'before'... The problem seems to be in ExecEndIndexScan - it does not release scanstate, ind exstate, indexstate->iss_RelationDescs and indexstate -> iss_ScanDescs... Dmitry Tkach
* Update copyright to 2002.Bruce Momjian2002-06-2030-60/+60
|
* Here is a patch for Composite and Set returning function support. I madeBruce Momjian2002-06-201-2/+122
| | | | | | | two small changes to the API since last patch, which hopefully completes the decoupling of composite function support from SRF specific support. Joe Conway
* Mark index entries "killed" when they are no longer visible to anyTom Lane2002-05-243-14/+14
| | | | | | | | | | | | | | | transaction, so as to avoid returning them out of the index AM. Saves repeated heap_fetch operations on frequently-updated rows. Also detect queries on unique keys (equality to all columns of a unique index), and don't bother continuing scan once we have found first match. Killing is implemented in the btree and hash AMs, but not yet in rtree or gist, because there isn't an equally convenient place to do it in those AMs (the outer amgetnext routine can't do it without re-pinning the index page). Did some small cleanup on APIs of HeapTupleSatisfies, heap_fetch, and index_insert to make this a little easier.
* Since COPY fires triggers, it seems like a good idea for it to useTom Lane2002-05-211-18/+2
| | | | | a frozen (copied) snapshot too. Move execMain's snapshot copying code out into a subroutine in case we find other places that need it.
* Remove global variable scanCommandId in favor of storing a command IDTom Lane2002-05-213-55/+35
| | | | | | | | | | | in snapshots, per my proposal of a few days ago. Also, tweak heapam.c routines (heap_insert, heap_update, heap_delete, heap_mark4update) to be passed the command ID to use, instead of doing GetCurrentCommandID. For catalog updates they'll still get passed current command ID, but for updates generated from the main executor they'll get passed the command ID saved in the snapshot the query is using. This should fix some corner cases associated with functions and triggers that advance current command ID while an outer query is still in progress.
* Restructure indexscan API (index_beginscan, index_getnext) perTom Lane2002-05-202-83/+44
| | | | | | | yesterday's proposal to pghackers. Also remove unnecessary parameters to heap_beginscan, heap_rescan. I modified pg_proc.h to reflect the new numbers of parameters for the AM interface routines, but did not force an initdb because nothing actually looks at those fields.
* Get rid of the last few uses of typeidTypeName() rather thanTom Lane2002-05-172-8/+7
| | | | format_type_be() in error messages.
* Get rid of long-since-vestigial Iter node type, in favor of adding aTom Lane2002-05-123-253/+3
| | | | | | | returns-set boolean field in Func and Oper nodes. This allows cleaner, more reliable tests for expressions returning sets in the planner and parser. For example, a WHERE clause returning a set is now detected and complained of in the parser, not only at runtime.
* First pass at set-returning-functions in FROM, by Joe Conway withTom Lane2002-05-129-20/+673
| | | | | | some kibitzing from Tom Lane. Not everything works yet, and there's no documentation or regression test, but let's commit this so Joe doesn't need to cope with tracking changes in so many files ...
* Enforce EXECUTE privilege for aggregate functions.Tom Lane2002-04-291-1/+10
|
* Support toasting of shared system relations, and provide toast tables forTom Lane2002-04-271-1/+2
| | | | | | | | | pg_database, pg_shadow, pg_group, all of which now have potentially-long fields. Along the way, get rid of SharedSystemRelationNames list: shared rels are now identified in their include/pg_catalog/*.h files by a BKI_SHARED_RELATION macro, while indexes and toast rels inherit sharedness automatically from their parent table. Fix some bugs with failure to detoast pg_group.grolist during ALTER GROUP.
* Restructure aclcheck error reporting to make permission-failureTom Lane2002-04-272-14/+18
| | | | | | | messages more uniform and internationalizable: the global array aclcheck_error_strings[] is gone in favor of a subroutine aclcheck_error(). Partial implementation of namespace-related permission checks --- not all done yet.
* Operators live in namespaces. CREATE/DROP/COMMENT ON OPERATOR takeTom Lane2002-04-162-4/+6
| | | | | | | | | | qualified operator names directly, for example CREATE OPERATOR myschema.+ ( ... ). To qualify an operator name in an expression you need to write OPERATOR(myschema.+) (thanks to Peter for suggesting an escape hatch). I also took advantage of having to reformat pg_operator to fix something that'd been bugging me for a while: mergejoinable operators should have explicit links to the associated cross-data-type comparison operators, rather than hardwiring an assumption that they are named < and >.
* The contents of command.c, creatinh.c, define.c, remove.c and rename.cTom Lane2002-04-152-4/+4
| | | | | | | | | | | | | | | have been divided according to the type of object manipulated - so ALTER TABLE code is in tablecmds.c, aggregate commands in aggregatecmds.c and so on. A few common support routines remain in define.c (prototypes in src/include/commands/defrem.h). No code has been changed except for includes to reflect the new files. The prototypes for aggregatecmds.c, functioncmds.c, operatorcmds.c, and typecmds.c remain in src/include/commands/defrem.h. From John Gray <jgray@azuli.co.uk>
* Checking to decide whether relations are system relations now dependsTom Lane2002-04-121-2/+2
| | | | | on the namespace not the name; pg_ is not a reserved prefix for table names anymore. From Fernando Nasser.
* Restructure representation of aggregate functions so that they have pg_procTom Lane2002-04-111-20/+77
| | | | | | | | | | entries, per pghackers discussion. This fixes aggregates to live in namespaces, and also simplifies/speeds up lookup in parse_func.c. Also, add a 'proimplicit' flag to pg_proc that controls whether a type coercion function may be invoked implicitly, or only explicitly. The current settings of these flags are more permissive than I would like, but we will need to debate and refine the behavior; for now, I avoided breaking regression tests as much as I could.
* Update comment to clarify fetch limit and LIMIT.Bruce Momjian2002-04-081-2/+3
|
* Reimplement temp tables using schemas. The temp table map is history;Tom Lane2002-03-311-3/+3
| | | | temp table entries in pg_class have the names the user would expect.
* pg_class has a relnamespace column. You can create and access tablesTom Lane2002-03-261-6/+10
| | | | | | in schemas other than the system namespace; however, there's no search path yet, and not all operations work yet on tables outside the system namespace.
* Change the aclchk.c routines to uniformly use OIDs to identify theTom Lane2002-03-211-7/+10
| | | | | | objects to be privilege-checked. Some change in their APIs would be necessary no matter what in the schema environment, and simply getting rid of the name-based interface entirely seems like the best way.
* First phase of SCHEMA changes, concentrating on fixing the grammar andTom Lane2002-03-212-6/+7
| | | | | | | | the parsetree representation. As yet we don't *do* anything with schema names, just drop 'em on the floor; but you can enter schema-compatible command syntax, and there's even a primitive CREATE SCHEMA command. No doc updates yet, except to note that you can now extract a field from a function-returning-row's result with (foo(...)).fieldname.
* Remove long-dead 'fix for SELECT NULL' to stop current coredump.Tom Lane2002-03-211-3/+2
|
* Code review for DOMAIN patch.Tom Lane2002-03-201-3/+2
|
* Code review for improved-hashing patch. Fix some portability issuesTom Lane2002-03-091-21/+16
| | | | | (char != unsigned char, Datum != uint32); make use of new hash code in dynahash hash tables and hash joins.
* I've attached a patch which implements Bob Jenkin's hash function forBruce Momjian2002-03-061-3/+2
| | | | | | | | | | | | | | | | | | | PostgreSQL. This hash function replaces the one used by hash indexes and the catalog cache. Hash joins use a different, relatively poor-quality hash function, but I'll fix that later. As suggested by Tom Lane, this patch also changes the size of the fixed hash table used by the catalog cache to be a power-of-2 (instead of a prime: I chose 256 instead of 257). This allows the catcache to lookup hash buckets using a simple bitmask. This should improve the performance of the catalog cache slightly, since the previous method (modulo a prime) was slow. In my tests, this improves the performance of hash indexes by between 4% and 8%; the performance when using btree indexes or seqscans is basically unchanged. Neil Conway <neilconway@rogers.com>
* Change made to elog:Bruce Momjian2002-03-062-4/+4
| | | | | | | | | | | | | | | | | | | o Change all current CVS messages of NOTICE to WARNING. We were going to do this just before 7.3 beta but it has to be done now, as you will see below. o Change current INFO messages that should be controlled by client_min_messages to NOTICE. o Force remaining INFO messages, like from EXPLAIN, VACUUM VERBOSE, etc. to always go to the client. o Remove INFO from the client_min_messages options and add NOTICE. Seems we do need three non-ERROR elog levels to handle the various behaviors we need for these messages. Regression passed.
* Commit to match discussed elog() changes. Only update is that LOG isBruce Momjian2002-03-025-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | now just below FATAL in server_min_messages. Added more text to highlight ordering difference between it and client_min_messages. --------------------------------------------------------------------------- REALLYFATAL => PANIC STOP => PANIC New INFO level the prints to client by default New LOG level the prints to server log by default Cause VACUUM information to print only to the client NOTICE => INFO where purely information messages are sent DEBUG => LOG for purely server status messages DEBUG removed, kept as backward compatible DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1 added DebugLvl removed in favor of new DEBUG[1-5] symbols New server_min_messages GUC parameter with values: DEBUG[5-1], INFO, NOTICE, ERROR, LOG, FATAL, PANIC New client_min_messages GUC parameter with values: DEBUG[5-1], LOG, INFO, NOTICE, ERROR, FATAL, PANIC Server startup now logged with LOG instead of DEBUG Remove debug_level GUC parameter elog() numbers now start at 10 Add test to print error message if older elog() values are passed to elog() Bootstrap mode now has a -d that requires an argument, like postmaster
* Teach planner about the idea that a mergejoin won't necessarily readTom Lane2002-03-011-77/+41
| | | | | | both input streams to the end. If one variable's range is much less than the other, an indexscan-based merge can win by not scanning all of the other table. Per example from Reinhard Max.
* Clean up BeginCommand and related routines. BeginCommand and EndCommandTom Lane2002-02-273-102/+74
| | | | | | | | | | | are now both invoked once per received SQL command (raw parsetree) from pg_exec_query_string. BeginCommand is actually just an empty routine at the moment --- all its former operations have been pushed into tuple receiver setup routines in printtup.c. This makes for a clean distinction between BeginCommand/EndCommand (once per command) and the tuple receiver setup/teardown routines (once per ExecutorRun call), whereas the old code was quite ad hoc. Along the way, clean up the calling conventions for ExecutorRun a little bit.
* Restructure command-completion-report code so that there is just oneTom Lane2002-02-262-5/+5
| | | | | | | report for each received SQL command, regardless of rewriting activity. Also ensure that this report comes from the 'original' command, not the last command generated by rewrite; this fixes 7.2 breakage for INSERT commands that have actions added by rules. Fernando Nasser and Tom Lane.
* A bunch of changes aimed at reducing backend startup time...Tom Lane2002-02-195-299/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | Improve 'pg_internal.init' relcache entry preload mechanism so that it is safe to use for all system catalogs, and arrange to preload a realistic set of system-catalog entries instead of only the three nailed-in-cache indexes that were formerly loaded this way. Fix mechanism for deleting out-of-date pg_internal.init files: this must be synchronized with transaction commit, not just done at random times within transactions. Drive it off relcache invalidation mechanism so that no special-case tests are needed. Cache additional information in relcache entries for indexes (their pg_index tuples and index-operator OIDs) to eliminate repeated lookups. Also cache index opclass info at the per-opclass level to avoid repeated lookups during relcache load. Generalize 'systable scan' utilities originally developed by Hiroshi, move them into genam.c, use in a number of places where there was formerly ugly code for choosing either heap or index scan. In particular this allows simplification of the logic that prevents infinite recursion between syscache and relcache during startup: we can easily switch to heapscans in relcache.c when and where needed to avoid recursion, so IndexScanOK becomes simpler and does not need any expensive initialization. Eliminate useless opening of a heapscan data structure while doing an indexscan (this saves an mdnblocks call and thus at least one kernel call).
* Privileges on functions and procedural languagesPeter Eisentraut2002-02-181-1/+4
|
* Ensure that a cursor is scanned under the same scanCommandId it wasTom Lane2002-02-141-7/+24
| | | | | | originally created with, so that the set of visible tuples does not change as a result of other activity. This essentially makes PG cursors INSENSITIVE per the SQL92 definition. See bug report of 13-Feb-02.
* Repair problems with EvalPlanQual where target table is scanned asTom Lane2002-02-112-47/+64
| | | | | | | inner indexscan (ie, one with runtime keys). ExecIndexReScan must compute or recompute runtime keys even if we are rescanning in the EPQ case. TidScan seems to have comparable problems. Per bug noted by Barry Lind 11-Feb-02.
* Add CHECK_FOR_INTERRUPTS() in various strategic spots, per commentsTom Lane2002-01-061-3/+5
| | | | from Hiroshi.
* SPI_cursor_open must copy by-reference parameter values into theTom Lane2002-01-031-6/+28
| | | | portal's memory context, so that they will live as long as the portal does.
* Insert CommandCounterIncrement call into SPI_cursor_open.Tom Lane2001-11-211-1/+4
|
* Repair crash in EvalPlanQual of query involving nestloop with innerTom Lane2001-11-121-2/+9
| | | | | index scan. Problem was that link to outer tuple wasn't being stored everyplace it needed to be.
* Clean up usage-statistics display code (ShowUsage and friends). StatFpTom Lane2001-11-101-10/+3
| | | | is gone, usage messages now go through elog(DEBUG).
* Fix coredump in plpgsql when trying to return a rowtype result.Tom Lane2001-11-051-1/+35
| | | | Need to return a TupleTableSlot, not just a bare tuple.
* Another pgindent run. Fixes enum indenting, and improves #endifBruce Momjian2001-10-288-18/+19
| | | | spacing. Also adds space for one-line comments.
* pgindent run on all C files. Java run to follow. initdb/regressionBruce Momjian2001-10-2531-411/+301
| | | | tests pass.
* Make SPI's column-accessing functions work for system columns as well asTom Lane2001-10-231-21/+61
| | | | user columns. Needed for foreign keys on OID, but useful in general.
* Further cleanup of dynahash.c API, in pursuit of portability andTom Lane2001-10-051-5/+3
| | | | | | | | | readability. Bizarre '(long *) TRUE' return convention is gone, in favor of just raising an error internally in dynahash.c when we detect hashtable corruption. HashTableWalk is gone, in favor of using hash_seq_search directly, since it had no hope of working with non-LONGALIGNable datatypes. Simplify some other code that was made undesirably grotty by promixity to HashTableWalk.
* Keep the contents of ItemPointerData not the pointers so thatHiroshi Inoue2001-09-291-16/+11
| | | | per tuple memory context doesn't discard them.
* Quick-and-dirty fix for recursive plpgsql functions, per bug report fromTom Lane2001-09-211-44/+61
| | | | | | | | Frank Miles 7-Sep-01. This is really just sticking a finger in the dike. Frank's case works now, but we still couldn't support a recursive function returning a set. Really need to restructure querytrees and execution state so that the querytree is *read only*. We've run into this over and over and over again ... it has to happen sometime soon.
* EXPLAIN ANALYZE feature to measure and show actual runtimes and tupleTom Lane2001-09-187-40/+176
| | | | | counts alongside the planner's estimates. By Martijn van Oosterhout, with some further work by Tom Lane.
* Suppress compiler warning.Tom Lane2001-09-171-2/+2
|