aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
* RESET ALL secondary patch:Bruce Momjian2001-06-18
| | | | | | | | | | Here is Tomified version of my 2 pending patches. Dropped the set_.._real change as it is not needed. Desc would be: * use GUC for settings from cmdline Marko Kreen
* Add GUC setting for Australian timezones. Uses new GUC boolean callbackBruce Momjian2001-06-18
| | | | | functions to clear date cache. Allow regression tests to pass when timezone set.
* Allow removal of system-named pg_* temp tables. Rename temp file/dir asBruce Momjian2001-06-18
| | | | pgsql_tmp.
* Improve wording of authentication files.Bruce Momjian2001-06-18
|
* Do some restructuring to improve performance of the catcaches. TeachTom Lane2001-06-18
| | | | | | | | | | | | | | | | | CatalogCacheFlushRelation (formerly called SystemCacheRelationFlushed) how to distinguish tuples it should flush from those it needn't; this means a relcache flush event now only removes the catcache entries it ought to, rather than zapping the caches completely as it used to. Testing with the regression tests indicates that this considerably improves the lifespan of catcache entries. Also, rearrange catcache data structures so that the limit on number of cached tuples applies globally across all the catcaches, rather than being per-catcache. It was a little silly to have the same size limit on both, say, pg_attribute caches and pg_am caches (there being only four possible rows in the latter...). Doing LRU removal across all the caches instead of locally in each one should reduce cache reload traffic in the more heavily used caches and improve the efficiency of cache memory use.
* Keep the list of to-be-NOTIFYed names in a plain List palloc'd inTom Lane2001-06-17
| | | | | | | TopTransactionContext, rather than using Dllist. This simplifies and speeds up the code, and eliminates a former risk of coredump when out of memory (since the old code didn't bother to check for malloc failure). It also moves us one step closer to retiring Dllist...
* Make inet/cidr << and <<= operators indexable. From Alex Pilosov ↵Tom Lane2001-06-17
| | | | <alex@pilosoft.com>.
* Tweak startup sequence so that running out of PROC array slots isTom Lane2001-06-16
| | | | | | | | | | detected sooner in backend startup, and is treated as an expected error (it gives 'Sorry, too many clients already' now). This allows us not to have to enforce the MaxBackends limit exactly in the postmaster. Also, remove ProcRemove() and fold its functionality into ProcKill(). There's no good reason for a backend not to be responsible for removing its PROC entry, and there are lots of good reasons for the postmaster not to be touching shared-memory data structures.
* It turns out that the relcache thinks it can distinguish differentTom Lane2001-06-16
| | | | | | | rules and triggers by OID. So, even though we have no cross-references in the system catalogs to pg_rewrite.oid or pg_trigger.oid, we'd better have unique indexes on them. Put back pg_rewrite_oid_index, which I mistakenly removed a few days ago, and add pg_trigger_oid_index.
* Add missing PG_SETMASK(&BlockSig) to SIGHUP_handler().Tom Lane2001-06-14
|
* has_table_privilege functions from Joe Conway (with some kibitzing fromTom Lane2001-06-14
| | | | | | Tom Lane). For the moment, only the OID/name variants are provided. I didn't force initdb, but the additions to the 'privileges' regress test won't pass until you do one.
* Allow a non-superuser database owner to vacuum all tables in hisTom Lane2001-06-13
| | | | | | | database, including system catalogs (but not the shared catalogs, since they don't really belong to his database). This is per recent mailing list discussion. Clean up some other code that also checks for database ownerness by introducing a test function is_dbadmin().
* Attached is a patch adding following functions:Bruce Momjian2001-06-13
| | | | | | | | | inet(text), cidr(text): convert a text value into inet/cidr set_masklen(inet): set masklen on the inet value Patch also contains regression checks for these functions. Alex Pilosov
* Fix compile failure when --enable-multibyte.Bruce Momjian2001-06-13
| | | | Marko Kreen
* Don't assume free(NULL) is OK. Yes, I know ANSI C says it is.Tom Lane2001-06-13
|
* Remove some dead code, simplify calling convention.Tom Lane2001-06-13
|
* Extend GUC concepts of parse_hook and assign_hook to all four supportedTom Lane2001-06-12
| | | | | | | | | | | | datatypes, not only strings. parse_hook is useless for bool, I suppose, but it seems possibly useful for int and double to apply variable-specific constraints that are more complex than simple range limits. assign_hook is definitely useful for all datatypes --- we need it right now for bool to support date cache reset when changing Australian timezone rule setting. Also, clean up some residual problems with the reset all/show all patch, including memory leaks and mistaken reset of PostPortNumber. It seems best that RESET ALL not touch variables that don't have SUSET or USERSET context.
* Repair problem with multi-action rules in combination with any nontrivialTom Lane2001-06-12
| | | | | | manipulation of rtable/jointree by planner. Rewriter was generating actions that shared rtable/jointree substructure, which caused havoc when planner got to the later actions that it'd already mucked up.
* Back out has_table_privilege patch.Bruce Momjian2001-06-12
|
* OK -- here's take #5.Bruce Momjian2001-06-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | It "make"s and "make check"s clean against current cvs tip. There are now both Text and Name variants, and the regression test support is rolled into the patch. Note that to be complete wrt Name based variants, there are now 12 user visible versions of has_table_privilege: has_table_privilege(Text usename, Text relname, Text priv_type) has_table_privilege(Text usename, Name relname, Text priv_type) has_table_privilege(Name usename, Text relname, Text priv_type) has_table_privilege(Name usename, Name relname, Text priv_type) has_table_privilege(Text relname, Text priv_type) /* assumes current_user */ has_table_privilege(Name relname, Text priv_type) /* assumes current_user */ has_table_privilege(Text usename, Oid reloid, Text priv_type) has_table_privilege(Name usename, Oid reloid, Text priv_type) has_table_privilege(Oid reloid, Text priv_type) /* assumes current_user */ has_table_privilege(Oid usesysid, Text relname, Text priv_type) has_table_privilege(Oid usesysid, Name relname, Text priv_type) has_table_privilege(Oid usesysid, Oid reloid, Text priv_type) For the Text based inputs, a new internal function, get_Name is used (shamelessly copied from get_seq_name in sequence.c) to downcase if not quoted, or remove quotes if quoted, and truncate. I also added a few test cases for the downcasing, quote removal, and Name based variants to the regression test. Joe Conway
* Clean up various to-do items associated with system indexes:Tom Lane2001-06-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | pg_database now has unique indexes on oid and on datname. pg_shadow now has unique indexes on usename and on usesysid. pg_am now has unique index on oid. pg_opclass now has unique index on oid. pg_amproc now has unique index on amid+amopclaid+amprocnum. Remove pg_rewrite's unnecessary index on oid, delete unused RULEOID syscache. Remove index on pg_listener and associated syscache for performance reasons (caching rows that are certain to change before you need 'em again is rather pointless). Change pg_attrdef's nonunique index on adrelid into a unique index on adrelid+adnum. Fix various incorrect settings of pg_class.relisshared, make that the primary reference point for whether a relation is shared or not. IsSharedSystemRelationName() is now only consulted to initialize relisshared during initial creation of tables and indexes. In theory we might now support shared user relations, though it's not clear how one would get entries for them into pg_class &etc of multiple databases. Fix recently reported bug that pg_attribute rows created for an index all have the same OID. (Proof that non-unique OID doesn't matter unless it's actually used to do lookups ;-)) There's no need to treat pg_trigger, pg_attrdef, pg_relcheck as bootstrap relations. Convert them into plain system catalogs without hardwired entries in pg_class and friends. Unify global.bki and template1.bki into a single init script postgres.bki, since the alleged distinction between them was misleading and pointless. Not to mention that it didn't work for setting up indexes on shared system relations. Rationalize locking of pg_shadow, pg_group, pg_attrdef (no need to use AccessExclusiveLock where ExclusiveLock or even RowExclusiveLock will do). Also, hold locks until transaction commit where necessary.
* Nest macros with slightly less enthusiasm, for performance and to avoidTom Lane2001-06-11
| | | | having non-gcc compilers spit up.
* Move temporary files into 'pg_tempfiles' subdirectory of each databaseTom Lane2001-06-11
| | | | | | directory (which can be made a symlink to put temp files on another disk). Add code to delete leftover temp files during postmaster startup. Bruce, with some kibitzing from Tom.
* Make planner compute the number of hash buckets the same way thatTom Lane2001-06-11
| | | | nodeHash.c will compute it (by sharing code).
* Fix thinko in hash cost estimation: average frequencyTom Lane2001-06-10
| | | | | | should be computed from total number of distinct values in whole relation, not # distinct values we expect to have after restriction clauses are applied.
* Allow GRANT/REVOKE to/from more than one user per invocation. Command tagPeter Eisentraut2001-06-09
| | | | | | | | for GRANT/REVOKE is now just that, not "CHANGE". On the way, migrate some of the aclitem internal representation away from the parser and build a real parse tree instead. Also add some 'const' qualifiers.
* Teach convert_to_scalar about datatypes timetz, inet, cidr, macaddr.Tom Lane2001-06-09
|
* Remove RelationGetBufferWithBuffer(), which is horribly confused aboutTom Lane2001-06-09
| | | | | | | | | appropriate pin-count manipulation, and instead use ReleaseAndReadBuffer. Make use of the fact that the passed-in buffer (if there is one) must be pinned to avoid grabbing the bufmgr spinlock when we are able to return this same buffer. Eliminate unnecessary 'previous tuple' and 'next tuple' fields of HeapScanDesc and IndexScanDesc, thereby removing a whole lot of bookkeeping from heap_getnext() and related routines.
* Preliminary code cleanup in elog(). Split out some code into utilityPeter Eisentraut2001-06-08
| | | | | functions, remove indent support, make sure all strings are marked translatable.
* reset all: command line and .conf options change defaultsBruce Momjian2001-06-07
| | | | | | | | | | on RESET ALL those are restored. show all: GUC + non-GUC. SHOW ALL, RESET ALL Marko Kreen
* This adds unary plus capability. No grammar changes, per Tom's request.Bruce Momjian2001-06-07
| | | | Marko Kreen
* get_seq_name should truncate name to NAMEDATALEN, so that this works:Tom Lane2001-06-06
| | | | | create sequence a1234567890123456789012345678901234567890; select nextval('a1234567890123456789012345678901234567890');
* Be a little smarter about deciding how many most-common values to save.Tom Lane2001-06-06
|
* Adjust WAL code so that checkpoints truncate the xlog at the previousTom Lane2001-06-06
| | | | | | | | | | | | checkpoint's redo pointer, not its undo pointer, per discussion in pghackers a few days ago. No point in hanging onto undo information until we have the ability to do something with it --- and this solves a rather large problem with log space for long-running transactions. Also, change all calls of write() to detect the case where write returned a count less than requested, but failed to set errno. Presume that this situation indicates ENOSPC, and give the appropriate error message, rather than a random message associated with the previous value of errno.
* Correct permissions-checking bugs associated with ancient decision toTom Lane2001-06-05
| | | | | | copy PUBLIC access rights into each newly created ACL entry. Instead treat each ACL entry as independent flags. Also clean up some ugliness in acl.h API.
* Improve planning of OR indexscan plans: for quals likeTom Lane2001-06-05
| | | | | | | | WHERE (a = 1 or a = 2) and b = 42 and an index on (a,b), include the clause b = 42 in the indexquals generated for each arm of the OR clause. Essentially this is an index- driven conversion from CNF to DNF. Implementation is a bit klugy, but better than not exploiting the extra quals at all ...
* Further work on making use of new statistics in planner. Adjust APIsTom Lane2001-06-05
| | | | | | | | | of costsize.c routines to pass Query root, so that costsize can figure more things out by itself and not be so dependent on its callers to tell it everything it needs to know. Use selectivity of hash or merge clause to estimate number of tuples processed internally in these joins (this is more useful than it would've been before, since eqjoinsel is somewhat more accurate than before).
* This patch adds support for %TYPE in CREATE FUNCTION argument and returnBruce Momjian2001-06-04
| | | | | | | types. This version has an elog() to remind the user the type resolution is not dynamic. Ian Lance Taylor
* Give error message, rather than coredump, for utility statements inTom Lane2001-06-04
| | | | | | | conditional rules (rules with WHERE clauses). We cannot support these since there's noplace to hang a condition on a utility statement. We caught the other case (attempt to attach a condition at rewrite time) awhile ago, but this one escaped notice until now.
* Mark many strings in backend not covered by elog for translation. Also,Peter Eisentraut2001-06-03
| | | | make strings in xlog.c look more like English and less like binary noise.
* Accept and output '-Infinity' as well as 'Infinity', per long-agoTom Lane2001-06-02
| | | | | suggestion from Ross Reedstrom. Still needs work to make those symbols convert to actual IEEE infinities (on machines where such things exist).
* Tweak sorting so that nulls appear at the front of a descending sortTom Lane2001-06-02
| | | | | | | | | | | (vs. at the end of a normal sort). This ensures that explicit sorts yield the same ordering as a btree index scan. To be really sure that that equivalence holds, we use the btree entries in pg_amop to decide whether we are looking at a '<' or '>' operator. For a sort operator that has no btree association, we put the nulls at the front if the operator is named '>' ... pretty grotty, but it does the right thing in simple ASC and DESC cases, and at least there's no possibility of getting a different answer depending on the plan type chosen.
* Native Language Support (NLS)Peter Eisentraut2001-06-02
| | | | | | | | | | | Use --enable-nls to turn it on; see installation instructions for details. See developer's guide how to make use of it in programs and how to add translations. psql sources have been almost fully prepared and an incomplete German translation has been provided. In the backend, only elog() calls are currently translatable, and the provided German translation file is more of a placeholder.
* Paranoia about unordered comparisons in IEEE float math. If we areTom Lane2001-06-02
| | | | | | given values that compare as unordered, make sure we reply that they are equal, which is better than giving an arbitrary answer --- at least it doesn't depend on which one is passed as which arg.
* dllist.c is included in the frontend libpq interface via symlink.Jan Wieck2001-06-02
| | | | | | | There is no elog() available. Used fprintf(stderr, ...) and exit instead. Jan
* Check for malloc failure.Tom Lane2001-06-01
|
* Guard against malloc failure. Also, don't examine segP->lastBackendTom Lane2001-06-01
| | | | until we hold the spinlock.
* Check for malloc failure.Tom Lane2001-06-01
|
* If spi.c wants to use malloc, it better test for malloc failure.Tom Lane2001-06-01
|
* New improved version of bpcharin() may have got the truncation caseTom Lane2001-06-01
| | | | | | | | | right, but it failed to get the padding case right. This was obscured by subsequent application of bpchar() in all but one regression test case, and that one didn't fail in an obvious way --- trailing blanks are hard to see. Add another test case to make it more obvious if it breaks again.