Commit Graph

  • ebcb4c931d Add a CONTINUE statement to PL/PgSQL, which can be used to begin the next iteration of a loop. Update documentation and add regression tests. Patch from Pavel Stehule, reviewed by Neil Conway. Neil Conway 2005-06-22 01:35:03 +00:00
  • 7a28de2052 pg_dump can now dump large objects even in plain-text output mode, by using the recently added lo_create() function. The restore logic in pg_restore is greatly simplified as well, since there's no need anymore to try to adjust database references to match a new set of blob OIDs. Tom Lane 2005-06-21 20:45:44 +00:00
  • b49d871f6a Fix pg_dumpall to do the right thing with "postgres" database, per Dave Page. Also, cause it to emit rather than ignore any ACL and datconfig options that may be set for these two databases. Tom Lane 2005-06-21 15:22:18 +00:00
  • 6f7fc0bade Cause initdb to create a third standard database "postgres", which unlike template0 and template1 does not have any special status in terms of backend functionality. However, all external utilities such as createuser and createdb now connect to "postgres" instead of template1, and the documentation is changed to encourage people to use "postgres" instead of template1 as a play area. This should fix some longstanding gotchas involving unexpected propagation of database objects by createdb (when you used template1 without understanding the implications), as well as ameliorating the problem that CREATE DATABASE is unhappy if anyone else is connected to template1. Patch by Dave Page, minor editing by Tom Lane. All per recent pghackers discussions. Tom Lane 2005-06-21 04:02:34 +00:00
  • 5bcb851c92 Fix a potential backend crash during authentication when parsing a malformed ident map file. This was introduced by the linked list rewrite in 8.0 -- mea maxima culpa. Neil Conway 2005-06-21 01:23:25 +00:00
  • ec3a1af0a8 Fix a potential backend crash during authentication when parsing a malformed ident map file. This was introduced by the linked list rewrite in 8.0 -- mea maxima culpa. Neil Conway 2005-06-21 01:20:09 +00:00
  • 09d1110c2a Trivial dead code removal: in CreateSchemaCommand(), 'owner_name' is only used in one branch of an if statement, so we can move its declaration to that block. This also avoids an unnecessary syscache lookup. Neil Conway 2005-06-21 00:58:15 +00:00
  • 2d4b9736bb Trivial dead code removal: in _complete_from_query(), 'text' cannot be NULL (e.g. due to the preceding strlen()). Therefore we needn't recheck this before initializing 'e_text'. Neil Conway 2005-06-21 00:48:33 +00:00
  • 141e878bc3 Trivial dead code removal: in makeObjectName(), name1 must be non-NULL (due to the preceding strlen(), for example), so we needn't recheck this before invoking pg_mbcliplen(). Neil Conway 2005-06-21 00:35:05 +00:00
  • 7d32f099d7 exec_eval_datum leaks memory when dealing with ROW or REC values. It never leaked memory before PG 8.0, so none of the callers are expecting this. Cleanest fix seems to be to make it allocate the needed memory in estate->eval_econtext, where it will be cleaned up by the next exec_eval_cleanup. Per report from Bill Rugolsky. Tom Lane 2005-06-20 22:51:49 +00:00
  • 638feae2c9 exec_eval_datum leaks memory when dealing with ROW or REC values. It never leaked memory before PG 8.0, so none of the callers are expecting this. Cleanest fix seems to be to make it allocate the needed memory in estate->eval_econtext, where it will be cleaned up by the next exec_eval_cleanup. Per report from Bill Rugolsky. Tom Lane 2005-06-20 22:51:29 +00:00
  • 59ee9448a8 Remove read_file/write_file tests. These were originally intended to *fail*, to test that plpython didn't allow untrusted operations. When we changed plpython to plpythonu because python didn't actually have a secure sandbox mode, someone (probably me :-() misinterpreted the tests as checking whether Python's file I/O works. Which is a stupid thing for us to be testing. Remove it so we don't clutter the filesystem with random temporary files. Tom Lane 2005-06-20 21:14:01 +00:00
  • 224501ed68 plpgsql's exec_assign_value() freed the old value of a variable before copying/converting the new value, which meant that it failed badly on "var := var" if var is of pass-by-reference type. Fix this and a similar hazard in exec_move_row(); not sure that the latter can manifest before 8.0, but patch it all the way back anyway. Per report from Dave Chapeskie. Tom Lane 2005-06-20 20:45:12 +00:00
  • 19cc0c4faf plpgsql's exec_assign_value() freed the old value of a variable before copying/converting the new value, which meant that it failed badly on "var := var" if var is of pass-by-reference type. Fix this and a similar hazard in exec_move_row(); not sure that the latter can manifest before 8.0, but patch it all the way back anyway. Per report from Dave Chapeskie. Tom Lane 2005-06-20 20:45:06 +00:00
  • a6f0dee775 plpgsql's exec_assign_value() freed the old value of a variable before copying/converting the new value, which meant that it failed badly on "var := var" if var is of pass-by-reference type. Fix this and a similar hazard in exec_move_row(); not sure that the latter can manifest before 8.0, but patch it all the way back anyway. Per report from Dave Chapeskie. Tom Lane 2005-06-20 20:44:57 +00:00
  • c541ca6403 plpgsql's exec_assign_value() freed the old value of a variable before copying/converting the new value, which meant that it failed badly on "var := var" if var is of pass-by-reference type. Fix this and a similar hazard in exec_move_row(); not sure that the latter can manifest before 8.0, but patch it all the way back anyway. Per report from Dave Chapeskie. Tom Lane 2005-06-20 20:44:50 +00:00
  • 9d7c005243 plpgsql's exec_assign_value() freed the old value of a variable before copying/converting the new value, which meant that it failed badly on "var := var" if var is of pass-by-reference type. Fix this and a similar hazard in exec_move_row(); not sure that the latter can manifest before 8.0, but patch it all the way back anyway. Per report from Dave Chapeskie. Tom Lane 2005-06-20 20:44:44 +00:00
  • b95ae32b41 Avoid WAL-logging individual tuple insertions during CREATE TABLE AS (a/k/a SELECT INTO). Instead, flush and fsync the whole relation before committing. We do still need the WAL log when PITR is active, however. Simon Riggs and Tom Lane. Tom Lane 2005-06-20 18:37:02 +00:00
  • 1bfdd1a893 fix founded hole in recovery after crash, add vacuum_delay_point() Teodor Sigaev 2005-06-20 15:22:38 +00:00
  • 3f6a094be1 Remove statement that GiST indexes aren't WAL-logged. Tom Lane 2005-06-20 14:53:32 +00:00
  • f0e7f9e30b Update text that stated GiST indexes aren't WAL-logged. Tom Lane 2005-06-20 13:52:17 +00:00
  • d544ec8bbd 1. full functional WAL for GiST 2. improve vacuum for gist - use FSM - full vacuum: - reforms parent tuple if it's needed ( tuples was deleted on child page or parent tuple remains invalid after crash recovery ) - truncate index file if possible 3. fixes bugs and mistakes Teodor Sigaev 2005-06-20 10:29:37 +00:00
  • 0b62bbe086 Cosmetic improvements to the timezone code: remove the use of the 'register' qualifier, make some function declarations more consistent, and so on. Neil Conway 2005-06-20 08:00:51 +00:00
  • ec490f5159 Change shell syntax that seems not to work right on FreeBSD 6-CURRENT buildfarm machines. Tom Lane 2005-06-20 02:26:50 +00:00
  • d38d06374d Add lock file contents printout to "can't happen" case to help investigate buildfarm failures. Tom Lane 2005-06-20 02:17:30 +00:00
  • 9de97c5531 Trivial code clarity improvement to UpdateStats(); no functional change. Neil Conway 2005-06-20 02:07:47 +00:00
  • 368739dca8 Fix bogus assumption that sizeof() produces an int-sized result. Tom Lane 2005-06-20 00:32:22 +00:00
  • 577247b023 Minor documentation update for RAISE expression patch. Neil Conway 2005-06-19 23:39:05 +00:00
  • d961a56899 Avoid unnecessary palloc overhead in _bt_first(). The temporary scankeys arrays that it needs can never have more than INDEX_MAX_KEYS entries, so it's reasonable to just allocate them as fixed-size local arrays, and save the cost of palloc/pfree. Not a huge savings, but a cycle saved is a cycle earned ... Tom Lane 2005-06-19 22:41:00 +00:00
  • fc654583ab Need #include <time.h> on some platforms. Tom Lane 2005-06-19 22:34:56 +00:00
  • 3f749924f8 Simplify uses of readdir() by creating a function ReadDir() that includes error checking and an appropriate ereport(ERROR) message. This gets rid of rather tedious and error-prone manipulation of errno, as well as a Windows-specific bug workaround, at more than a dozen call sites. After an idea in a recent patch by Heikki Linnakangas. Tom Lane 2005-06-19 21:34:03 +00:00
  • e26b0abda3 Arrange to fsync two-phase-commit state files only during checkpoints; given reasonably short lifespans for prepared transactions, this should mean that only a small minority of state files ever need to be fsynced at all. Per discussion with Heikki Linnakangas. Tom Lane 2005-06-19 20:00:39 +00:00
  • ba90268e2b Add comment about \# in bcc makefiles. Bruce Momjian 2005-06-19 13:14:20 +00:00
  • 624789d191 Cleanup for Win32 compile. Bruce Momjian 2005-06-19 13:10:56 +00:00
  • a11333fab7 Fix typo in comment. Bruce Momjian 2005-06-19 01:06:12 +00:00
  • 41d28499a2 When using C-string lookup keys in a dynahash.c hash table, use strncpy() not memcpy() to copy the offered key into the hash table during HASH_ENTER. This avoids possible core dump if the passed key is located very near the end of memory. Per report from Stefan Kaltenbrunner. Tom Lane 2005-06-18 20:51:59 +00:00
  • 558ff41f27 When using C-string lookup keys in a dynahash.c hash table, use strncpy() not memcpy() to copy the offered key into the hash table during HASH_ENTER. This avoids possible core dump if the passed key is located very near the end of memory. Per report from Stefan Kaltenbrunner. Tom Lane 2005-06-18 20:51:44 +00:00
  • 6a6f2d91d4 When using C-string lookup keys in a dynahash.c hash table, use strncpy() not memcpy() to copy the offered key into the hash table during HASH_ENTER. This avoids possible core dump if the passed key is located very near the end of memory. Per report from Stefan Kaltenbrunner. Tom Lane 2005-06-18 20:51:30 +00:00
  • a8d1075f27 Add a time-of-preparation column to the pg_prepared_xacts view, per an old suggestion by Oliver Jowett. Also, add a transaction column to the pg_locks view to show the xid of each transaction holding or awaiting locks; this allows prepared transactions to be properly associated with the locks they own. There was already a column named 'transaction', and I chose to rename it to 'transactionid' --- since this column is new in the current devel cycle there should be no backwards compatibility issue to worry about. Tom Lane 2005-06-18 19:33:42 +00:00
  • 66b098492e Dept. of second thoughts: regular COMMIT deletes deletable files before releasing locks, so COMMIT PREPARED should too. Tom Lane 2005-06-18 05:21:09 +00:00
  • 25f8916137 Remove 2phase commit TODO.detail. Bruce Momjian 2005-06-18 01:51:03 +00:00
  • 5117da7b37 Remove TODO.detail. < * -Add two-phase commit [2phase] > * -Add two-phase commit Bruce Momjian 2005-06-18 01:45:58 +00:00
  • 5f98a6f7a3 Done: Bruce Momjian 2005-06-18 01:45:03 +00:00
  • d0a89683a3 Two-phase commit. Original patch by Heikki Linnakangas, with additional hacking by Alvaro Herrera and Tom Lane. Tom Lane 2005-06-17 22:32:51 +00:00
  • 5495575903 Re-order item. Bruce Momjian 2005-06-17 19:20:27 +00:00
  • 9f64e10225 NetBSD uses "options" not "option". Bruce Momjian 2005-06-17 16:46:45 +00:00
  • 524ec00d3e Move item: Bruce Momjian 2005-06-17 13:47:24 +00:00
  • 30b0f49ce6 Update NetBSD 'options' description. Bruce Momjian 2005-06-17 13:12:01 +00:00
  • 7a91540202 Translation updates Peter Eisentraut 2005-06-17 11:42:02 +00:00
  • 2b6dd51a5f Translation updates Peter Eisentraut 2005-06-17 11:30:57 +00:00
  • 1414707e03 Improve wording of read-only GUC variables; shows -> reports. Bruce Momjian 2005-06-17 03:25:51 +00:00
  • 1b618e50a6 Add: Bruce Momjian 2005-06-17 02:20:43 +00:00
  • a6c7e843da Update GUC description for kerberos usernames. Bruce Momjian 2005-06-16 20:47:20 +00:00
  • 26cbccd52c Add fsync() define for Win32 to cover cases other than wal_sync_method where we need fsync(). Bruce Momjian 2005-06-16 17:53:54 +00:00
  • e046b3ddd7 Add \x hex support to ecpg strings. This just passes them to the backend. Bruce Momjian 2005-06-16 01:43:48 +00:00
  • d1944de61b Move SYMMETRIC/ASYMMETRIC to reserved words to avoid shift/reduce conflicts. Bruce Momjian 2005-06-15 19:44:05 +00:00
  • 07b80eb301 Improve comment wording. Bruce Momjian 2005-06-15 16:28:06 +00:00
  • e5a11a8879 Improve hash method for bitmapsets: some examination of actual outputs shows that adding a circular shift between words greatly improves the distribution of hash outputs. Tom Lane 2005-06-15 16:24:07 +00:00
  • 1f01d59e06 Fix display of database name during autovacuum. Bruce Momjian 2005-06-15 13:55:23 +00:00
  • 2becf48483 Update catalog version for recent function additions. Bruce Momjian 2005-06-15 12:56:35 +00:00
  • c119c5bd49 Change the implementation of hash join to attempt to avoid unnecessary work if either of the join relations are empty. The logic is: Neil Conway 2005-06-15 07:27:44 +00:00
  • 4aaff55359 Minor SGML markup cleanup. Neil Conway 2005-06-15 06:29:25 +00:00
  • f4d907ca85 Remove old *.backup files when we do pg_stop_backup(). This prevents a large number of *.backup files from existing in pg_xlog/ Bruce Momjian 2005-06-15 01:36:08 +00:00
  • 713507b02d Mention we now support BETWEEN SYMMETRIC. Bruce Momjian 2005-06-15 01:28:43 +00:00
  • d092524418 > Here's a patch I added against plperl, originally against beta5, now > against rc1. It simply checks with GetDatabaseEncoding() if the current > database is in UTF-8, and if so, sets the UTF-8 flag on the arguments > that are passed to perl. This means that it isn't necessary to > utf8::upgrade() every string, as perl has no way of knowing offhand > that a string is UTF-8 -- but postgres does, because the database > encoding is specified, so it makes sense to turn the flag on. You > should also be able to properly manipulate UTF-8 strings now from > plperl as opposed to plperlu, because otherwise you'd have to use > encoding 'utf8' which was not allowed. It could also eliminate some > unexpected bugs if you assume that perl knows the string is unicode. It > is enabled only for perl 5.6 and higher, so earlier versions will not > be affected. > > I have been assured by crab that the patch is quite harmless and will > not break anything. It would be great to see it in 8 final! :-) Bruce Momjian 2005-06-15 00:35:16 +00:00
  • 0851a6fbc7 This patch makes it possible to use the full set of timezones when doing "AT TIME ZONE", and not just the shorlist previously available. For example: Bruce Momjian 2005-06-15 00:34:11 +00:00
  • 5955945828 Support 3 and 4-byte unicode characters. Bruce Momjian 2005-06-15 00:15:08 +00:00
  • f4c4f1ce52 >> Do you agree that using a hashtable for it in general is a good idea >> assuming this sideeffect is removed, though? > >I have no problem with the hashtable, only with preloading it with >everything. What I'd like to see is that the table inherited at fork() >contains just the data for the default timezone. (At least in the >normal case where that setting hasn't been changed since postmaster >start.) Bruce Momjian 2005-06-15 00:09:26 +00:00
  • b4132fd0ac Now \d show tablespace of indices per discussion. Bruce Momjian 2005-06-14 23:59:31 +00:00
  • 8b84aebddf Add BETWEEN SYMMETRIC. Bruce Momjian 2005-06-14 23:47:39 +00:00
  • 495f9aa098 reorder: < * -Add BETWEEN ASYMMETRIC/SYMMETRIC > * -Add BETWEEN SYMMETRIC/ASYMMETRIC Bruce Momjian 2005-06-14 23:44:47 +00:00
  • 853e8b1426 Done: Bruce Momjian 2005-06-14 23:44:27 +00:00
  • 921de09e40 Use '&nbsp;' escapes for leading spaces in table values, for use in EXPLAIN output. Bruce Momjian 2005-06-14 22:15:57 +00:00
  • 8563ccae2c Simplify shared-memory lock data structures as per recent discussion: it is sufficient to track whether a backend holds a lock or not, and store information about transaction vs. session locks only in the inside-the-backend LocalLockTable. Since there can now be but one PROCLOCK per lock per backend, LockCountMyLocks() is no longer needed, thus eliminating some O(N^2) behavior when a backend holds many locks. Also simplify the LockAcquire/LockRelease API by passing just a 'sessionLock' boolean instead of a transaction ID. The previous API was designed with the idea that per-transaction lock holding would be important for subtransactions, but now that we have subtransactions we know that this is unwanted. While at it, add an 'isTempObject' parameter to LockAcquire to indicate whether the lock is being taken on a temp table. This is not used just yet, but will be needed shortly for two-phase commit. Tom Lane 2005-06-14 22:15:33 +00:00
  • f5835b4b8d Add pg_postmaster_start_time() function. Bruce Momjian 2005-06-14 21:04:42 +00:00
  • b5e65c8325 Done: Bruce Momjian 2005-06-14 20:43:02 +00:00
  • 61e2c00e64 Have SHOW ALL include variable descriptions. Bruce Momjian 2005-06-14 20:42:53 +00:00
  • cf48d8b3aa Update: Bruce Momjian 2005-06-14 18:24:06 +00:00
  • d2c313bcf5 Move item into proper section: Bruce Momjian 2005-06-14 18:10:42 +00:00
  • f04c39402a Attached is a makefile I hacked up to build pg_config under MSVC - the reason is that it's required (more or less) in order to build the latest DBD::Pg code and I was testing that out under MSVC. Bruce Momjian 2005-06-14 17:50:38 +00:00
  • 954f6bcffe Add GUC krb_server_hostname so the server hostname can be specified as part of service principal. If not set, any service principal matching an entry in the keytab can be used. Bruce Momjian 2005-06-14 17:43:14 +00:00
  • dac94e3495 Done: Bruce Momjian 2005-06-14 15:11:11 +00:00
  • 2b91c8cf00 The random selection in function linear() could deliver a value equal to max if geqo_rand() returns exactly 1.0, resulting in failure due to indexing off the end of the pool array. Also, since this is using inexact float math, it seems wise to guard against roundoff error producing values slightly outside the expected range. Per report from bug@zedware.org. Tom Lane 2005-06-14 14:21:43 +00:00
  • d4b7dfacfa The random selection in function linear() could deliver a value equal to max if geqo_rand() returns exactly 1.0, resulting in failure due to indexing off the end of the pool array. Also, since this is using inexact float math, it seems wise to guard against roundoff error producing values slightly outside the expected range. Per report from bug@zedware.org. Tom Lane 2005-06-14 14:21:37 +00:00
  • a1f08fcf80 The random selection in function linear() could deliver a value equal to max if geqo_rand() returns exactly 1.0, resulting in failure due to indexing off the end of the pool array. Also, since this is using inexact float math, it seems wise to guard against roundoff error producing values slightly outside the expected range. Per report from bug@zedware.org. Tom Lane 2005-06-14 14:21:31 +00:00
  • d9de1bb47a The random selection in function linear() could deliver a value equal to max if geqo_rand() returns exactly 1.0, resulting in failure due to indexing off the end of the pool array. Also, since this is using inexact float math, it seems wise to guard against roundoff error producing values slightly outside the expected range. Per report from bug@zedware.org. Tom Lane 2005-06-14 14:21:23 +00:00
  • 1265724ff5 The random selection in function linear() could deliver a value equal to max if geqo_rand() returns exactly 1.0, resulting in failure due to indexing off the end of the pool array. Also, since this is using inexact float math, it seems wise to guard against roundoff error producing values slightly outside the expected range. Per report from bug@zedware.org. Tom Lane 2005-06-14 14:21:16 +00:00
  • 37c839365c WAL for GiST. It work for online backup and so on, but on recovery after crash (power loss etc) it may say that it can't restore index and index should be reindexed. Teodor Sigaev 2005-06-14 11:45:14 +00:00
  • d6636543c4 Allow the parameters to PL/PgSQL's RAISE statement to be expressions, instead of just scalar variables. Add regression tests and update the documentation. Along the way, remove some redundant error checking code from exec_stmt_perform(). Neil Conway 2005-06-14 06:43:15 +00:00
  • bd6bf50b03 Teach planner to optionally ignore index columns that have an equality constraint while determining whether the index sort order matches the query's ORDER BY. This for example allows an index on (x,y) to match ... WHERE x = 42 ORDER BY y; It only works for btree indexes, but since those are the only ones we currently have that are ordered at all, that's good enough for now. Per popular demand. Tom Lane 2005-06-14 04:04:30 +00:00
  • 189f89cb0e Done: Bruce Momjian 2005-06-14 03:20:10 +00:00
  • 2ee0d5549f Add -L option to psql to log sessions. Bruce Momjian 2005-06-14 02:57:45 +00:00
  • e31cd6739a Cleanup for "#option dump" in PL/PgSQL: don't print empty ELSE blocks, fix two grammatical errors, and print the INTO target of EXECUTE INTO if one is specified. Neil Conway 2005-06-14 00:10:02 +00:00
  • c186c93148 Change the planner to allow indexscan qualification clauses to use nonconsecutive columns of a multicolumn index, as per discussion around mid-May (pghackers thread "Best way to scan on-disk bitmaps"). This turns out to require only minimal changes in btree, and so far as I can see none at all in GiST. btcostestimate did need some work, but its original assumption that index selectivity == heap selectivity was quite bogus even before this. Tom Lane 2005-06-13 23:14:49 +00:00
  • 077811605e Per discussion on -hackers, this patch changes psql's "expanded" output mode to only affect the presentation of normal query results, not the output of psql slash commands. Documentation updated. I also made some unrelated minor psql cleanup. Per suggestion from Stuart Cooper. Neil Conway 2005-06-13 06:36:22 +00:00
  • 8c05ca7754 SGML cleanup: consistently use "endterm" in <xref>s that link to the reference page for SQL commands, so that the link text is italicized. Neil Conway 2005-06-13 02:40:08 +00:00
  • a2fb7b8a1f Adjust lo_open() so that specifying INV_READ without INV_WRITE creates a descriptor that uses the current transaction snapshot, rather than SnapshotNow as it did before (and still does if INV_WRITE is set). This means pg_dump will now dump a consistent snapshot of large object contents, as it never could do before. Also, add a lo_create() function that is similar to lo_creat() but allows the desired OID of the large object to be specified. This will simplify pg_restore considerably (but I'll fix that in a separate commit). Tom Lane 2005-06-13 02:26:53 +00:00
  • f52a34229b Document the --enable-integer-datetimes configure option where the other configure options are documented. Per Michael Glaesemann. Tom Lane 2005-06-12 15:51:50 +00:00
  • 294505e2b1 This patch removes some old code from libpq that implements a URI-like syntax for database connection parameters. It has been inside an #ifdef NOT_USED block since 2001 or so and is marked as "broken", so I don't think it is likely to be rehabilitated any time soon. Neil Conway 2005-06-12 00:07:07 +00:00
  • 72a5db15d1 libpq was not consistently checking for memory allocation failures. This patch adds missing checks to the call sites of malloc(), strdup(), PQmakeEmptyPGresult(), pqResultAlloc(), and pqResultStrdup(), and updates the documentation. Per original report from Volkan Yazici about PQmakeEmptyPGresult() not checking for malloc() failure. Neil Conway 2005-06-12 00:00:21 +00:00