aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
...
* Dept of second thoughts: don't use the new wide-character upper/lowerTom Lane2004-06-06
| | | | | code if we are running in a single-byte encoding. No point in the extra overhead in that case.
* Allow use of table rowtypes directly as column types of other tables.Tom Lane2004-06-06
| | | | | | | | Instead of prohibiting that, put code into ALTER TABLE to reject ALTERs that would affect other tables' columns. Eventually we will probably want to extend ALTER TABLE to actually do something useful here, but in the meantime it seems wrong to forbid the feature completely just because ALTER isn't fully baked.
* Add binary I/O support for composite types.Tom Lane2004-06-06
|
* Remove finger from dike: composite types are now allowed as table columns.Tom Lane2004-06-06
| | | | | Still a few things to do, like binary I/O and regression tests and docs, but might as well let people play with the toy.
* Preliminary support for composite type I/O; just text for now,Tom Lane2004-06-06
| | | | no binary yet.
* Infrastructure for I/O of composite types: arrange for the I/O routinesTom Lane2004-06-06
| | | | | | | | | | of a composite type to get that type's OID as their second parameter, in place of typelem which is useless. The actual changes are mostly centralized in getTypeInputInfo and siblings, but I had to fix a few places that were fetching pg_type.typelem for themselves instead of using the lsyscache.c routines. Also, I renamed all the related variables from 'typelem' to 'typioparam' to discourage people from assuming that they necessarily contain array element types.
* Tweak palloc/repalloc to allow zero bytes to be requested, as per recentTom Lane2004-06-05
| | | | | proposal. Eliminate several dozen now-unnecessary hacks to avoid palloc(0). (It's likely there are more that I didn't find.)
* Make the world very nearly safe for composite-type columns in tables.Tom Lane2004-06-05
| | | | | | | | | | | | | | | | | | | 1. Solve the problem of not having TOAST references hiding inside composite values by establishing the rule that toasting only goes one level deep: a tuple can contain toasted fields, but a composite-type datum that is to be inserted into a tuple cannot. Enforcing this in heap_formtuple is relatively cheap and it avoids a large increase in the cost of running the tuptoaster during final storage of a row. 2. Fix some interesting problems in expansion of inherited queries that reference whole-row variables. We never really did this correctly before, but it's now relatively painless to solve by expanding the parent's whole-row Var into a RowExpr() selecting the proper columns from the child. If you dike out the preventive check in CheckAttributeType(), composite-type columns now seem to actually work. However, we surely cannot ship them like this --- without I/O for composite types, you can't get pg_dump to dump tables containing them. So a little more work still to do.
* Resurrect heap_deformtuple(), this time implemented as a singly nestedTom Lane2004-06-04
| | | | | | | | | | loop over the fields instead of a loop around heap_getattr. This is considerably faster (O(N) instead of O(N^2)) when there are nulls or varlena fields, since those prevent use of attcacheoff. Replace loops over heap_getattr with heap_deformtuple in situations where all or most of the fields have to be fetched, such as printtup and tuptoaster. Profiling done more than a year ago shows that this should be a nice win for situations involving many-column tables.
* Remove some long-obsolete code that was causing a strange error messageTom Lane2004-06-04
| | | | | | | when someone attempts to create a column of a composite datatype. For now, just make sure we produce a reasonable error at the 'right place'. Not sure if this will be made to work before 7.5, but make it act reasonably in case nothing more gets done.
* Remove typeTypeFlag(), which was not only unused but entirely redundantTom Lane2004-06-03
| | | | with typeTypType().
* Add range-checking in timestamp_recv and timestamptz_recv, perTom Lane2004-06-03
| | | | Stephen Frost. Also tighten date range check in timestamp2tm.
* Adjust our timezone library to use pg_time_t (typedef'd as int64) inTom Lane2004-06-03
| | | | | | | | | | | | | | | | | | | place of time_t, as per prior discussion. The behavior does not change on machines without a 64-bit-int type, but on machines with one, which is most, we are rid of the bizarre boundary behavior at the edges of the 32-bit-time_t range (1901 and 2038). The system will now treat times over the full supported timestamp range as being in your local time zone. It may seem a little bizarre to consider that times in 4000 BC are PST or EST, but this is surely at least as reasonable as propagating Gregorian calendar rules back that far. I did not modify the format of the zic timezone database files, which means that for the moment the system will not know about daylight-savings periods outside the range 1901-2038. Given the way the files are set up, it's not a simple decision like 'widen to 64 bits'; we have to actually think about the range of years that need to be supported. We should probably inquire what the plans of the upstream zic people are before making any decisions of our own.
* Add PGETC (for pg_service.conf) and PGLOCALE (for locale dir)Bruce Momjian2004-06-03
| | | | | | | | | environment variable processing to libpq. The patch also adds code to our client apps so we set the environment variable directly based on our binary location, unless it is already set. This will allow our applications to emit proper locale messages that are generated in libpq.
* Per previous discussions, here are two functions to send INT and TERMBruce Momjian2004-06-02
| | | | | | | (cancel and terminate) signals to other backends. They permit only INT and TERM, and permits sending only to postgresql backends. Magnus Hagander
* OK, here's the final version of ALTER TABLE ... SET WITHOUT CLUSTER.Bruce Momjian2004-06-02
| | | | | | Has docs + regression test. Christopher Kings-Lynne
* Fix breakage from GUC-extension-variables patch.Tom Lane2004-06-02
|
* Adjust btree index build to not use shared buffers, thereby avoiding theTom Lane2004-06-02
| | | | | | | | | | | locking conflict against concurrent CHECKPOINT that was discussed a few weeks ago. Also, if not using WAL archiving (which is always true ATM but won't be if PITR makes it into this release), there's no need to WAL-log the index build process; it's sufficient to force-fsync the completed index before commit. This seems to gain about a factor of 2 in my tests, which is consistent with writing half as much data. I did not try it with WAL on a separate drive though --- probably the gain would be a lot less in that scenario.
* Align GRANT/REVOKE behavior more closely with the SQL spec, per discussionTom Lane2004-06-01
| | | | | | | | | | of bug report #1150. Also, arrange that the object owner's irrevocable grant-option permissions are handled implicitly by the system rather than being listed in the ACL as self-granted rights (which was wrong anyway). I did not take the further step of showing these permissions in an explicit 'granted by _SYSTEM' ACL entry, as that seemed more likely to bollix up existing clients than to do anything really useful. It's still a possible future direction, though.
* FastList is history, yay.Tom Lane2004-06-01
|
* Just about there on de-FastList-ification.Tom Lane2004-06-01
|
* Some more de-FastList-ification.Tom Lane2004-06-01
|
* Desultory de-FastList-ification. RelOptInfo.reltargetlist is back toTom Lane2004-06-01
| | | | being a plain List.
* Additional mop-up for sync-to-fsync changes: avoid issuing fsyncs forTom Lane2004-05-31
| | | | | | temp tables, and avoid WAL-logging truncations of temp tables. Do issue fsync on truncated files (not sure this is necessary but it seems like a good idea).
* Minor code rationalization: FlushRelationBuffers just returns void,Tom Lane2004-05-31
| | | | | | | | rather than an error code, and does elog(ERROR) not elog(WARNING) when it detects a problem. All callers were simply elog(ERROR)'ing on failure return anyway, and I find it hard to envision a caller that would not, so we may as well simplify the callers and produce the more useful error message directly.
* Suppress compile warnings on machines where the INT64CONST() decorationTom Lane2004-05-31
| | | | is actually needed. Per Oliver Elphick.
* I think I've finally identified the cause of the off-by-one-secondTom Lane2004-05-31
| | | | | | | | | | issue in timestamp conversion that we hacked around for so long by ignoring the seconds field from localtime(). It's simple: you have to watch out for platform-specific roundoff error when reducing a possibly-fractional timestamp to integral time_t form. In particular we should subtract off the already-determined fractional fsec field. This should be enough to get an exact answer with int64 timestamps; with float timestamps, throw in a rint() call just to be sure.
* Per previous discussions, get rid of use of sync(2) in favor ofTom Lane2004-05-31
| | | | | | | | | | | | | | | | | explicitly fsync'ing every (non-temp) file we have written since the last checkpoint. In the vast majority of cases, the burden of the fsyncs should fall on the bgwriter process not on backends. (To this end, we assume that an fsync issued by the bgwriter will force out blocks written to the same file by other processes using other file descriptors. Anyone have a problem with that?) This makes the world safe for WIN32, which ain't even got sync(2), and really makes the world safe for Unixen as well, because sync(2) never had the semantics we need: it offers no way to wait for the requested I/O to finish. Along the way, fix a bug I recently introduced in xlog recovery: file truncation replay failed to clear bufmgr buffers for the dropped blocks, which could result in 'PANIC: heap_delete_redo: no block' later on in xlog replay.
* Use the new List API function names throughout the backend, and disable theNeil Conway2004-05-30
| | | | | list compatibility API by default. While doing this, I decided to keep the llast() macro around and introduce llast_int() and llast_oid() variants.
* Paranoia: ensure MyBackendId is InvalidBackendId in a process that hasTom Lane2004-05-30
| | | | never executed SIBackendInit().
* Implement new PostmasterIsAlive() check for WIN32, per Claudio Natoli.Tom Lane2004-05-30
| | | | In passing, align a few error messages with the style guide.
* Separate out bgwriter code into a logically separate module, ratherTom Lane2004-05-29
| | | | | | | | | than being random pieces of other files. Give bgwriter responsibility for all checkpoint activity (other than a post-recovery checkpoint); so this child process absorbs the functionality of the former transient checkpoint and shutdown subprocesses. While at it, create an actual include file for postmaster.c, which for some reason never had its own file before.
* Translation updatePeter Eisentraut2004-05-29
|
* Fix another place that assumed 'x = lcons(y, z)' would not have anyTom Lane2004-05-29
| | | | | side-effect on the original list z. I fear we have a few more of these to track down yet :-(.
* Fix minor error in comment.Tom Lane2004-05-28
|
* Fix thinko in recent patch to change temp-table permissions behavior:Tom Lane2004-05-28
| | | | | | | | | | | this is an aclmask function and does not have the same return convention as aclcheck functions. Also adjust the behavior so that users without CREATE TEMP permission still have USAGE permission on their session's temp schema. This allows privileged code to create a temp table and make it accessible to code that's not got the same privilege. (Since the default permissions on a table are no-access, an explicit grant on the table will still be needed; but I see no reason that the temp schema itself should prohibit such access.)
* Fix some typos I introduced in WIN32-only code late last night.Tom Lane2004-05-28
| | | | Thanks to Thomas Hallgren.
* Code review for EXEC_BACKEND changes. Reduce the number of #ifdefs byTom Lane2004-05-28
| | | | | | | | | | | about a third, make it work on non-Windows platforms again. (But perhaps I broke the WIN32 code, since I have no way to test that.) Fold all the paths that fork postmaster child processes to go through the single routine SubPostmasterMain, which takes care of resurrecting the state that would normally be inherited from the postmaster (including GUC variables). Clean up some places where there's no particularly good reason for the EXEC and non-EXEC cases to work differently. Take care of one or two FIXMEs that remained in the code.
* Make sure elog behaves sanely if invoked before GUC initializes.Tom Lane2004-05-28
|
* On WIN32, don't choke when setlocale(LC_MESSAGES, "") returns NULL.Tom Lane2004-05-27
| | | | Per report from Magnus.
* Get rid of the former rather baroque mechanism for propagating the valuesTom Lane2004-05-27
| | | | | | | | | | of ThisStartUpID and RedoRecPtr into new backends. It's a lot easier just to make them all grab the values out of shared memory during startup. This helps to decouple the postmaster from checkpoint execution, which I need since I'm intending to let the bgwriter do it instead, and it also fixes a bug in the Win32 port: ThisStartUpID wasn't getting propagated at all AFAICS. (Doesn't give me a lot of faith in the amount of testing that port has gotten.)
* pgindent files for Tom.Bruce Momjian2004-05-27
|
* Cleanup for Win32 pgkill.Bruce Momjian2004-05-27
|
* Move pgkill out into /port so pg_ctl can use it on Win32.Bruce Momjian2004-05-27
|
* Reduce the minimum allocable chunk size to 8 bytes (from 16). Now thatTom Lane2004-05-26
| | | | | | | ListCells are only 8 bytes instead of 12 (on 4-byte-pointer machines anyway), it's worth maintaining a separate freelist for 8-byte objects. Remembering that alloc chunks carry 8 bytes of overhead, this should reduce the net storage requirement for a long List by about a third.
* A couple other cosmetic cleanups in new List stuff.Tom Lane2004-05-26
|
* Use new forboth() macro to make loop coding a bit clearer.Tom Lane2004-05-26
|
* *) inet_(client|server)_(addr|port)() and necessary documentation forBruce Momjian2004-05-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the four functions. > Also, please justify the temp-related changes. I was not aware that we > had any breakage there. patch-tmp-schema.txt contains the following bits: *) Changes pg_namespace_aclmask() so that the superuser is always able to create objects in the temp namespace. *) Changes pg_namespace_aclmask() so that if this is a temp namespace, objects are only allowed to be created in the temp namespace if the user has TEMP privs on the database. This encompasses all object creation, not just TEMP tables. *) InitTempTableNamespace() checks to see if the current user, not the session user, has access to create a temp namespace. The first two changes are necessary to support the third change. Now it's possible to revoke all temp table privs from non-super users and limiting all creation of temp tables/schemas via a function that's executed with elevated privs (security definer). Before this change, it was not possible to have a setuid function to create a temp table/schema if the session user had no TEMP privs. patch-area-path.txt contains: *) Can now determine the area of a closed path. patch-dfmgr.txt contains: *) Small tweak to add the library path that's being expanded. I was using $lib/foo.so and couldn't easily figure out what the error message, "invalid macro name in dynamic library path" meant without looking through the source code. With the path in there, at least I know where to start looking in my config file. Sean Chittenden
* Use a cleaner substitute for the inability to apply length() to the tailTom Lane2004-05-26
| | | | of a list. Per private discussion with Neil.
* Add <limits.h>, per Magnus.Tom Lane2004-05-26
|