Commit Graph

1806 Commits

Author SHA1 Message Date
Tom Lane
fb47385fc8 Resurrect -F switch: it controls fsyncs again, though the fsyncs are
mostly just on the WAL logfile nowadays.  But if people want to disable
fsync for performance, why should we say no?
2000-12-08 22:21:33 +00:00
Hiroshi Inoue
d7892e0263 REINDEX under WAL. 2000-12-08 06:17:58 +00:00
Tom Lane
821f4673ff Make OVERLAPS operators conform to SQL92 spec regarding NULL handling.
As I read it, the spec requires a non-null result in some cases where
one of the inputs is NULL: specifically, if the other endpoint of that
interval is between the endpoints of the other interval, then the result
is known TRUE despite the missing endpoint.  The spec could've been a
lot simpler if they did not intend this behavior.
I did not force an initdb for this change, but if you don't do one you'll
still see the old strict-function behavior.
2000-12-07 18:38:59 +00:00
Tom Lane
73d2a3595a Clean up handling of FOR UPDATE inside views and subselects ... make it
work where we can (given that the executor only handles it at top level)
and generate an error where we can't.  Note that while the parser has
been allowing views to say SELECT FOR UPDATE for a few weeks now, that
hasn't actually worked until just now.
2000-12-06 23:55:19 +00:00
Tom Lane
5fb1022212 Don't include miscadmin.h in elog.h, since the former is not part of
the installed header file set.
2000-12-06 17:25:46 +00:00
Tom Lane
a51f004d29 Repair breakage of rules containing INSERT ... SELECT actions, per bug
report from Joel Burton.  Turns out that my simple idea of turning the
SELECT into a subquery does not interact well *at all* with the way the
rule rewriter works.  Really what we need to make INSERT ... SELECT work
cleanly is to decouple targetlists from rangetables: an INSERT ... SELECT
wants to have two levels of targetlist but only one rangetable.  No time
for that for 7.1, however, so I've inserted some ugly hacks to make the
rewriter know explicitly about the structure of INSERT ... SELECT queries.
Ugh :-(
2000-12-05 19:15:10 +00:00
Tom Lane
a27b691e29 Ensure that all uses of <ctype.h> functions are applied to unsigned-char
values, whether the local char type is signed or not.  This is necessary
for portability.  Per discussion on pghackers around 9/16/00.
2000-12-03 20:45:40 +00:00
Tom Lane
68ed296301 Don't use 'private' as a parameter name in visible headers ... makes C++
very unhappy ...
2000-12-03 17:18:10 +00:00
Thomas G. Lockhart
6969b8fa11 Repair usage of the OVERLAPS operator.
Allow some operator-like tokens to be used as function names.
Flesh out support for time, timetz, and interval operators
 and interactions.
Regression tests pass, but non-reference-platform horology test results
 will need to be updated.
2000-12-03 14:51:12 +00:00
Thomas G. Lockhart
48781d44e4 Support IBM S/390. Patches from Neale Ferguson@softwareAG-usa.com. 2000-12-03 14:41:47 +00:00
Vadim B. Mikheev
65b362fae1 Disable elog(ERROR|FATAL) in signal handlers in
critical sections of code.
2000-12-03 10:27:29 +00:00
Tom Lane
079c60abc0 Don't cause --enable-cassert to define COPY_PARSE_PLAN_TREES automatically
anymore.  That won't teach us anything new for the rest of this release
cycle, so it seems better to keep the --assert environment more like the
non-assert environment for beta.
I'm going to leave CLOBBER_FREED_MEMORY and MEMORY_CONTEXT_CHECKING
turned on by --enable-cassert for now, however.
2000-12-02 18:16:40 +00:00
Tom Lane
217d1566bf Make tuple receive/print routines TOAST-aware. Formerly, printtup would
leak memory when printing a toasted attribute, and printtup_internal
didn't work at all...
2000-12-01 22:10:31 +00:00
Tom Lane
a49436d7e9 Pursuant to a pghackers discussion back around 11-Jul-00, get rid of aset.c's
not-very-good handling of mid-size allocation requests.  Do everything via
either the "small" case (chunk size rounded up to power of 2) or the "large"
case (pass it straight off to malloc()).  Increase the number of freelists
a little to set the breakpoint between these behaviors at 8K.
2000-12-01 18:14:29 +00:00
Tom Lane
dd2b56d623 Clean up MEMORY_CONTEXT_CHECKING code, and apply it more thoroughly. Also,
apply Karel Zak's patch to recycle residual space in an exhausted allocation
block.  (Bet you thought I'd forgot about that, Karel?)
2000-12-01 05:16:45 +00:00
Tom Lane
73d0514dea Make default socket directory location configurable from config.h.
If we're going to let it be run-time configurable, might as well allow
this too...
2000-11-30 23:19:04 +00:00
Peter Eisentraut
37b7d5c39e Remove DISABLE_COMPLEX_MACRO definitions, since people seem to be getting
by without them.

Don't check for preprocessor symbols from system header files in port
include files, since those header files aren't included at this point.
2000-11-30 21:16:12 +00:00
Tom Lane
1f5cc8c78a Remove VARLENA_FIXED_SIZE hack, which is irreversibly broken now that
both MULTIBYTE and TOAST prevent char(n) from being truly fixed-size.
Simplify and speed up fastgetattr() and index_getattr() macros by
eliminating special cases for attnum=1.  It's just as fast to handle
the first attribute by presetting its attcacheoff to zero; so do that
instead when loading the tupledesc in relcache.c.
2000-11-30 18:38:47 +00:00
Vadim B. Mikheev
81c8c244b2 No more #ifdef XLOG. 2000-11-30 08:46:26 +00:00
Vadim B. Mikheev
741510521c XLOG stuff for sequences.
CommitDelay in guc.c
2000-11-30 01:47:33 +00:00
Tom Lane
680b7357ce Rearrange bufmgr header files so that buf_internals.h need not be
included by everything that includes bufmgr.h --- it's supposed to be
internals, after all, not part of the API!  This fixes the conflict
against FreeBSD headers reported by Rosenman, by making it unnecessary
for s_lock.h to be included by plperl.c.
2000-11-30 01:39:08 +00:00
Tom Lane
792b0f4666 Get rid of not-very-portable fcntl(F_SETLK) mechanism for locking the Unix
socket file, in favor of having an ordinary lockfile beside the socket file.
Clean up a few robustness problems in the lockfile code.  If postmaster is
going to reject a connection request based on database state, it will now
tell you so before authentication exchange not after.  (Of course, a failure
after is still possible if conditions change meanwhile, but this makes life
easier for a yet-to-be-written pg_ping utility.)
2000-11-29 20:59:54 +00:00
Tom Lane
c715fdea26 Significant cleanups in SysV IPC handling (shared mem and semaphores).
IPC key assignment will now work correctly even when multiple postmasters
are using same logical port number (which is possible given -k switch).
There is only one shared-mem segment per postmaster now, not 3.
Rip out broken code for non-TAS case in bufmgr and xlog, substitute a
complete S_LOCK emulation using semaphores in spin.c.  TAS and non-TAS
logic is now exactly the same.
When deadlock is detected, "Deadlock detected" is now the elog(ERROR)
message, rather than a NOTICE that comes out before an unhelpful ERROR.
2000-11-28 23:27:57 +00:00
Tom Lane
e3269cab31 Make PGLC_setlocale() static, and document that it can't be used safely
for any other purpose than PGLC_localeconv()'s internal save/restore of
locale settings.  Fix cash.c to call PGLC_localeconv() rather than
making a direct call to localeconv() --- the old way, if PGLC_localeconv()
had already cached a locale result, it would be overwritten by the first
cash_in or cash_out operation, leading to wrong-locale results later.
Probably no demonstrable bug today, since we only appear to be looking
at the LC_MONETARY results which should be the same anyway, but definitely
a gotcha waiting to strike.
2000-11-25 22:43:08 +00:00
Bruce Momjian
74dc04a034 Move connection defines to miscadmin.h. 2000-11-25 22:34:14 +00:00
Tom Lane
bbea3643a3 Store current LC_COLLATE and LC_CTYPE settings in pg_control during initdb;
re-adopt these settings at every postmaster or standalone-backend startup.
This should fix problems with indexes becoming corrupt due to failure to
provide consistent locale environment for postmaster at all times.  Also,
refuse to start up a non-locale-enabled compilation in a database originally
initdb'd with a non-C locale.  Suppress LIKE index optimization if locale
is not "C" or "POSIX" (are there any other locales where it's safe?).
Issue NOTICE during initdb if selected locale disables LIKE optimization.
2000-11-25 20:33:54 +00:00
Bruce Momjian
3f1998727d here is a patch for formatting.c (to_char/timestampt()), for 7.1
it fixing Y,YY,YYY,YYYY conversion, the docs and regress tests update
 are included too.

  During the patch testing I found small bug in miscadmin.h in
convertstr() declaration. Here it's fixed too.

 Thanks

        Karel
2000-11-25 05:00:33 +00:00
Bruce Momjian
9d5098ca78 Rename GUC name from unixsocket to unix_socket_directory 2000-11-25 04:13:18 +00:00
Peter Eisentraut
5b00ea9e50 Make SET SESSION CHARACTERISTICS compliant with SQL 99. Remove redundant,
non-standard clauses.  Allow CHARACTERISTICS as unquoted identifier.
Merge related reference pages.
2000-11-24 20:16:40 +00:00
Tom Lane
80dab5bd69 A catalog cache that never caches isn't much of a cache :-(. Mea culpa.
Thanks to Brian Hirt for pointing out the performance lossage.
2000-11-24 04:16:12 +00:00
Bruce Momjian
287fd7a995 Recommit socket path fix. It works now. 2000-11-22 03:40:19 +00:00
Bruce Momjian
e921ff1779 Back out socket path until it works. 2000-11-22 02:47:30 +00:00
Bruce Momjian
c8b9b14df1 Back out socket file path change until it works. 2000-11-22 02:38:25 +00:00
Bruce Momjian
98e195d23b Make socket option specify just the directory, not the full path. 2000-11-22 01:41:14 +00:00
Peter Eisentraut
fd05f89645 Extend accept/AF_UNIX bug workaround to SCO OpenServer. 2000-11-21 23:03:54 +00:00
Peter Eisentraut
a70e74b060 Put external declarations into header files. 2000-11-21 21:16:06 +00:00
Tom Lane
93fcbd140a Make oidin/oidout produce and consume unsigned representation of Oid,
rather than just being aliases for int4in/int4out.  Give type Oid a
full set of comparison operators that do proper unsigned comparison,
instead of reusing the int4 comparators.  Since pg_dump is now doing
unsigned comparisons of OIDs, it is now *necessary* that we play by
the rules here.  In fact, given that btoidcmp() has been doing unsigned
comparison for quite some time, it seems likely that we have index-
corruption problems in 7.0 and before once the Oid counter goes past
2G.  Fixing these operators is a necessary step before we can think
about 8-byte Oid, too.
2000-11-21 03:23:21 +00:00
Vadim B. Mikheev
c07bb9e0ad No casting to LSN (XLogRecPtr) is required. 2000-11-20 21:12:26 +00:00
Tom Lane
5bb2300b59 Revise handling of oldstyle/newstyle functions per recent discussions
in pghackers list.  Support for oldstyle internal functions is gone
(no longer needed, since conversion is complete) and pg_language entry
'internal' now implies newstyle call convention.  pg_language entry
'newC' is gone; both old and newstyle dynamically loaded C functions
are now called language 'C'.  A newstyle function must be identified
by an associated info routine.  See src/backend/utils/fmgr/README.
2000-11-20 20:36:57 +00:00
Peter Eisentraut
99198ac6b8 Enable WAL in config.h, not Makefile.global. 2000-11-20 16:52:54 +00:00
Peter Eisentraut
9394d391b8 Add configure checks for strtoll, strtoull (or strto[u]q). Disable
'long long int' portions of ecpg if the type or these functions don't
exist.
2000-11-20 15:56:14 +00:00
Vadim B. Mikheev
a221d95f28 Compile WAL by default. 2000-11-20 05:18:40 +00:00
Tom Lane
0514ad126b Tweak AbsoluteTimeIsReal() to avoid compiler bugs on machines where
a > comparison against INT_MIN may do the wrong thing.  Per suggestion
from Andreas.
2000-11-18 05:41:45 +00:00
Peter Eisentraut
52aa720320 Add separate type category for bit string types, allowing mixed bit/varbit
function calls to work.
2000-11-17 19:57:48 +00:00
Tom Lane
a933ee38bb Change SearchSysCache coding conventions so that a reference count is
maintained for each cache entry.  A cache entry will not be freed until
the matching ReleaseSysCache call has been executed.  This eliminates
worries about cache entries getting dropped while still in use.  See
my posting to pg-hackers of even date for more info.
2000-11-16 22:30:52 +00:00
Bruce Momjian
312063c97b Make pgsql compile on FreeBSD-alpha.
Context diff this time.

Remove -m486 compile args for FreeBSD-i386, compile -O2 on i386.

Compile with only -O on alpha for codegen safety.

Make the port use the TEST_AND_SET for alpha and i386 on FreeBSD.

Fix a lot of bogus string formats for outputting pointers (cast to int
and %u/%x replaced with no cast and %p), and 'Size'(size_t) are now
cast to 'unsigned long' and output with %lu/

Remove an unused variable.

Alfred Perlstein
2000-11-16 05:51:07 +00:00
Peter Eisentraut
76920de895 Rename parameter "hostname" to "virtual_host". Seemed very ambiguous... 2000-11-15 18:36:06 +00:00
Tom Lane
21e1e6643c Minor cleanup of tableOid-related coding. 2000-11-14 21:04:32 +00:00
Tom Lane
b0d243e420 Clean up comments. 2000-11-14 20:47:34 +00:00
Tom Lane
2cf48ca04b Extend CREATE DATABASE to allow selection of a template database to be
cloned, rather than always cloning template1.  Modify initdb to generate
two identical databases rather than one, template0 and template1.
Connections to template0 are disallowed, so that it will always remain
in its virgin as-initdb'd state.  pg_dumpall now dumps databases with
restore commands that say CREATE DATABASE foo WITH TEMPLATE = template0.
This allows proper behavior when there is user-added data in template1.
initdb forced!
2000-11-14 18:37:49 +00:00
Bruce Momjian
026643a6e7 Rename PortName to PortNumber. 2000-11-14 01:15:06 +00:00
Bruce Momjian
2150c2edf1 UUNET is looking into offering PostgreSQL as a part of a managed web
hosting product, on both shared and dedicated machines.  We currently
offer Oracle and MySQL, and it would be a nice middle-ground.
However, as shipped, PostgreSQL lacks the following features we need
that MySQL has:

1. The ability to listen only on a particular IP address.  Each
   hosting customer has their own IP address, on which all of their
   servers (http, ftp, real media, etc.) run.
2. The ability to place the Unix-domain socket in a mode 700 directory.
   This allows us to automatically create an empty database, with an
   empty DBA password, for new or upgrading customers without having
   to interactively set a DBA password and communicate it to (or from)
   the customer.  This in turn cuts down our install and upgrade times.
3. The ability to connect to the Unix-domain socket from within a
   change-rooted environment.  We run CGI programs chrooted to the
   user's home directory, which is another reason why we need to be
   able to specify where the Unix-domain socket is, instead of /tmp.
4. The ability to, if run as root, open a pid file in /var/run as
   root, and then setuid to the desired user.  (mysqld -u can almost
   do this; I had to patch it, too).

The patch below fixes problem 1-3.  I plan to address #4, also, but
haven't done so yet.  These diffs are big enough that they should give
the PG development team something to think about in the meantime :-)
Also, I'm about to leave for 2 weeks' vacation, so I thought I'd get
out what I have, which works (for the problems it tackles), now.

With these changes, we can set up and run PostgreSQL with scripts the
same way we can with apache or proftpd or mysql.

In summary, this patch makes the following enhancements:

1. Adds an environment variable PGUNIXSOCKET, analogous to MYSQL_UNIX_PORT,
   and command line options -k --unix-socket to the relevant programs.
2. Adds a -h option to postmaster to set the hostname or IP address to
   listen on instead of the default INADDR_ANY.
3. Extends some library interfaces to support the above.
4. Fixes a few memory leaks in PQconnectdb().

The default behavior is unchanged from stock 7.0.2; if you don't use
any of these new features, they don't change the operation.

David J. MacKenzie
2000-11-13 15:18:15 +00:00
Tom Lane
ebb0a20149 Keep track of the last active slot in the shared ProcState array, so
that search loops only have to scan that far and not through all maxBackends
entries.  This eliminates a performance penalty for setting maxBackends
much higher than the average number of active backends.  Also, eliminate
no-longer-used 'backend tag' concept.  Remove setting of environment
variables at backend start (except for CYR_RECODE), since none of them
are being examined by the backend any longer.
2000-11-12 20:51:52 +00:00
Tom Lane
6543d81d65 Restructure handling of inheritance queries so that they work with outer
joins, and clean things up a good deal at the same time.  Append plan node
no longer hacks on rangetable at runtime --- instead, all child tables are
given their own RT entries during planning.  Concept of multiple target
tables pushed up into execMain, replacing bug-prone implementation within
nodeAppend.  Planner now supports generating Append plans for inheritance
sets either at the top of the plan (the old way) or at the bottom.  Expanding
at the bottom is appropriate for tables used as sources, since they may
appear inside an outer join; but we must still expand at the top when the
target of an UPDATE or DELETE is an inheritance set, because we actually need
a different targetlist and junkfilter for each target table in that case.
Fortunately a target table can't be inside an outer join...  Bizarre mutual
recursion between union_planner and prepunion.c is gone --- in fact,
union_planner doesn't really have much to do with union queries anymore,
so I renamed it grouping_planner.
2000-11-12 00:37:02 +00:00
Thomas G. Lockhart
17d63245c7 Define conversions to and from text for date, time, and timetz. 2000-11-11 19:55:39 +00:00
Tom Lane
a210023008 Adjust INET/CIDR display conventions and reimplement some INET/CIDR
functions, per recent discussions on pghackers.  For now, I have called
the verbose-display formatting function text(), but will reconsider if
enough people object.
initdb forced.
2000-11-10 20:13:27 +00:00
Vadim B. Mikheev
92875e6f44 pg_fsync is fsync in WAL version. 2000-11-10 03:53:45 +00:00
Tom Lane
ddeab22565 Clean up syscache so that recursive invocation is safe, and remove error
message about recursive use of a syscache.  Also remove most of the
specialized indexscan routines in indexing.c --- it turns out that
catcache.c is perfectly able to perform the indexscan for itself,
in fact has already looked up all the information needed to do so!
This should be faster as well as needing far less boilerplate code.
2000-11-10 00:33:12 +00:00
Vadim B. Mikheev
b0299c5d37 Auto checkpoint creation. 2000-11-09 11:26:00 +00:00
Tom Lane
3908473c80 Make DROP TABLE rollback-able: postpone physical file delete until commit.
(WAL logging for this is not done yet, however.)  Clean up a number of really
crufty things that are no longer needed now that DROP behaves nicely.  Make
temp table mapper do the right things when drop or rename affecting a temp
table is rolled back.  Also, remove "relation modified while in use" error
check, in favor of locking tables at first reference and holding that lock
throughout the statement.
2000-11-08 22:10:03 +00:00
Peter Eisentraut
3304341700 Reimplement alternative database locations with symlinks. No changes in
user interface.
2000-11-08 16:59:50 +00:00
Peter Eisentraut
306c44eead Add -V option to backend, to show version, since --version doesn't seem
to work everywhere.  Also, on FreeBSD you need to set the optreset variable
to 1 before parsing the command line a second time with getopt().
2000-11-06 22:18:10 +00:00
Thomas G. Lockhart
d9ef7e9ec7 Add support for AT TIME ZONE syntax. 2000-11-06 16:05:25 +00:00
Thomas G. Lockhart
8e8fc32bec Add functions to support AT TIME ZONE syntax.
Update catalog version to today.
2000-11-06 15:58:46 +00:00
Vadim B. Mikheev
f0e37a8531 New CHECKPOINT command.
Auto removing of offline log files and creating new file
at checkpoint time.
2000-11-05 22:50:21 +00:00
Tom Lane
11f7b29054 Allow ORDER BY, LIMIT in sub-selects. Fix most (not all) cases where
the grammar did not allow redundant parentheses around sub-selects.
Distinguish LIMIT ALL from LIMIT 0; make the latter behave as one would
expect.
2000-11-05 00:15:54 +00:00
Peter Eisentraut
abfb417574 Make the backend grok relative paths for the data directory by converting
it to an absolute path.
2000-11-04 12:43:24 +00:00
Peter Eisentraut
dfda21e7a6 Add configure check to see whether <string.h> and <strings.h> may both be
included, and then include <strings.h> if so.  Several systems already
needed <strings.h> anyway.  Some new systems that claim to conform to the
Unix 9x "standard" do not declare str[n]casemp() in string.h, and C99
compilers will not like that.
2000-11-03 18:43:52 +00:00
Vadim B. Mikheev
b98ba2a04c pg_variable is not used in WAL version now. 2000-11-03 11:39:36 +00:00
Tom Lane
7a64100164 Fix insufficiently-parenthesized macro definitions.
No known bug here, but...
2000-11-02 23:11:03 +00:00
Peter Eisentraut
d1bfa6c72e Add runtime configuration options to control permission bits and group
owner of unix socket.
2000-11-01 21:14:03 +00:00
Peter Eisentraut
b99ee7f37d This is the minimal version of the Darwin support patch from
Bruce Hartzler <bruceh@mail.utexas.edu>.  It contains shared library
support, regression test map, and the usual template files.  The dynamic
loader is missing, the spin lock code apparently doesn't assemble due to
syntax problems, and semaphores are to be hoped for from Apple.
2000-10-31 19:55:20 +00:00
Peter Eisentraut
73874a06f0 Change the parser to convert SQL "position" and "substring" syntax to
position() and substring() functions, so that it works transparently for
bit types as well.  Alias the text functions appropriately.

Add position() for bit types.

Add new constant node T_BitString that represents literals of the form
B'1001 and pass those to zpbit type.
2000-10-31 10:22:13 +00:00
Tatsuo Ishii
1acf6f9c8e Add support for code conversion between Unicode and other encodings.
Supported encodings are: EUC_JP, EUC_CN, EUC_KR, EUC_TW, Shift JIS,
Big5, ISO8859-[1-5].
TODO: testings! and documentations...
2000-10-30 10:41:05 +00:00
Tatsuo Ishii
e5b6b0ebb9 Add new configure option "--enable-uniconv" that enables automatic
code conversion between Unicode and other encodings. Note that
this option requires --enable-multibyte also.
The reason why this is optional is that the feature requires huge
mapping tables and I don't think every user need the feature.
2000-10-30 07:17:31 +00:00
Peter Eisentraut
525e1c4436 USE_POSIX_TIME replaced by HAVE_TM_ZONE || HAVE_INT_TIMEZONE, which are
equivalent.

In linux.h there were some #undef HAVE_INT_TIMEZONE, which are useless
because HAVE_TM_ZONE overrides it anyway, and messing with configure
results isn't cool.
2000-10-29 13:17:34 +00:00
Peter Eisentraut
4f82ab4c97 #define JMP_BUF has been unnecessary since the arrival of the sigsetjmp
test.
2000-10-28 23:53:01 +00:00
Peter Eisentraut
0c0a176370 As we don't use struct dirent, the #define SYSV_DIRENT is useless. If we
every do need it we'd better use AC_HEADER_DIRENT from Autoconf.

#define NO_EMPTY_STMTS is completely unused.
2000-10-28 22:53:17 +00:00
Bruce Momjian
88094f2e2b beos fixes from Cyril VELTER 2000-10-28 18:27:57 +00:00
Vadim B. Mikheev
5b0740d3fc WAL 2000-10-28 16:21:00 +00:00
Tatsuo Ishii
2969c01d55 Remove gcc-only macro definition 2000-10-27 02:23:51 +00:00
Tom Lane
2f35b4efdb Re-implement LIMIT/OFFSET as a plan node type, instead of a hack in
ExecutorRun.  This allows LIMIT to work in a view.  Also, LIMIT in a
cursor declaration will behave in a reasonable fashion, whereas before
it was overridden by the FETCH count.
2000-10-26 21:38:24 +00:00
Tom Lane
8cbda7cbd0 Fix breakage I introduced yesterday in MULTIBYTE compilations.
Sorry 'bout that, chief...
2000-10-26 17:31:35 +00:00
Tom Lane
0a63b6d066 Support SET/SHOW/RESET client_encoding and server_encoding even when
MULTIBYTE support is not compiled (you just can't set them to anything
but SQL_ASCII).  This should reduce interoperability problems between
MB-enabled clients and non-MB-enabled servers.
2000-10-25 19:44:44 +00:00
Vadim B. Mikheev
157ff4e108 WAL utils defs 2000-10-25 00:49:14 +00:00
Peter Eisentraut
b0c1c53a43 Integer binary operators, from Marko Kreen <marko@l-t.ee>. Renamed bitxor
operator to '#' for consistency.  Parser still needs work.
2000-10-24 20:16:48 +00:00
Tom Lane
7ab8384543 Create empty file so that CVS sources compile (Vadim can fill in real
definition later...)
2000-10-24 18:05:14 +00:00
Vadim B. Mikheev
db2faa943a WAL misc 2000-10-24 09:56:23 +00:00
Tom Lane
a9b6b01ee8 Reconsider page size for large objects: rather than stuffing disk pages
as full as possible, seems better to use a tuple size around BLCKSZ/4
so that less space is wasted when a LO tuple is updated.  Also, this
lets us use a logical page size that's an exact power of two, avoiding
partial-page writes when client is sending us stuff in power-of-2
buffer chunks.
2000-10-24 03:34:53 +00:00
Tom Lane
4f44aa04b5 Major overhaul of large-object implementation, by Denis Perchine with
kibitzing from Tom Lane.  Large objects are now all stored in a single
system relation "pg_largeobject" --- no more xinv or xinx files, no more
relkind 'l'.  This should offer substantial performance improvement for
large numbers of LOs, since there won't be directory bloat anymore.
It'll also fix problems like running out of locktable space when you
access thousands of LOs in one transaction.
Also clean up cruft in read/write routines.  LOs with "holes" in them
(never-written byte ranges) now work just like Unix files with holes do:
a hole reads as zeroes but doesn't occupy storage space.
INITDB forced!
2000-10-24 01:38:44 +00:00
Bruce Momjian
8111329b87 Back out xti.h portion of the patch. 2000-10-23 14:50:44 +00:00
Vadim B. Mikheev
4b65a2840b New relcache hash table with RelFileNode as key to be used
from bufmgr - it would be nice to have separate hash in smgr
for node <--> fd mappings, but for the moment it's easy to
add new hash to relcache.
Fixed small bug in xlog.c:ReadRecord.
2000-10-23 04:10:24 +00:00
Tom Lane
9ace03183c Some small polishing of Mark Hollomon's cleanup of DROP command: might
as well allow DROP multiple INDEX, RULE, TYPE as well.  Add missing
CommandCounterIncrement to DROP loop, which could cause trouble otherwise
with multiple DROP of items affecting same catalog entries.  Try to
bring a little consistency to various error messages using 'does not exist',
'nonexistent', etc --- I standardized on 'does not exist' since that's
what the vast majority of the existing uses seem to be.
2000-10-22 23:32:48 +00:00
Peter Eisentraut
fba790ad58 Makeover for Unixware 7.1.1
* Makefile: Add more standard targets.  Improve shell redirection in GNU
make detection.
* src/backend/access/transam/rmgr.c: Fix incorrect(?) C.
* src/backend/libpq/pqcomm.c (StreamConnection): Work around accept() bug.
* src/include/port/unixware.h: ...with help from here.
* src/backend/nodes/print.c (plannode_type): Remove some "break"s after
"return"s.
* src/backend/tcop/dest.c (DestToFunction): ditto.
* src/backend/nodes/readfuncs.c: Add proper prototypes.
* src/backend/utils/adt/numutils.c (pg_atoi): Cope specially with strtol()
setting EINVAL. This saves us from creating an extra set of regression test
output for the affected systems.
* src/include/storage/s_lock.h (tas): Correct prototype.
* src/interfaces/libpq/fe-connect.c (parseServiceInfo): Don't use variable
as dimension in array definition.
* src/makefiles/Makefile.unixware: Add support for GCC.
* src/template/unixware: same here
* src/test/regress/expected/abstime-solaris-1947.out: Adjust whitespace.
* src/test/regress/expected/horology-solaris-1947.out: Part of this file
was evidently missing.
* src/test/regress/pg_regress.sh: Fix shell.  mkdir -p returns non-zero if
the directory exists.
* src/test/regress/resultmap: Add entries for Unixware.
2000-10-22 22:15:13 +00:00
Tom Lane
e51d0b3c37 datlastsysoid is an Oid, not an int4 ... 2000-10-22 18:29:58 +00:00
Philip Warner
4ac174213f Add new datlastsysoid to pg_database.
This field stores the last allocated OID after the database was created.
Used by pg_dump in deciding what is user-defined vs. system-defined.
2000-10-22 17:55:49 +00:00
Bruce Momjian
aa23c70522 BACKED OUT.
> Regression tests opr_sanity and sanity_check are now failing.

Um, Bruce, I've said several times that I didn't think Perchine's large
object changes should be applied until someone had actually reviewed
them.
2000-10-22 05:27:23 +00:00
Peter Eisentraut
f8ff1ee5aa Move DLSUFFIX, AROPT, and CFLAGS_SL settings from template to
Makefile.port, since they are of no use to configure and much of the
library magic happens in Makefile.port anyway.

Use __alpha, not __alpha__, since the former is universally available.
Remove -DNOFIXADE from the compile command line and put it in the port
include file.
2000-10-21 22:36:14 +00:00
Bruce Momjian
293d1e5f2c here it is as requested by Bruce.
I tested it restoring my database with > 100000 BLOBS, and dumping it out.
But unfortunatly I can not restore it back due to problems in pg_dump.

--
Sincerely Yours,
Denis Perchine
2000-10-21 15:55:29 +00:00
Vadim B. Mikheev
a7fcadd10a WAL 2000-10-21 15:43:36 +00:00
Peter Eisentraut
805e431a38 Add support for VPATH builds, that is, building somewhere else than in the
source directory.  This involves mostly makefiles using $(srcdir) when they
might have used ".".  (Regression tests don't work with this, yet.)

Sort out usage of CPPFLAGS, CFLAGS (and CXXFLAGS).  Add "override" keyword
in most places, to preserve necessary flags even when the user overrode the
flags.
2000-10-20 21:04:27 +00:00
Vadim B. Mikheev
b58c0411ba redo/undo support functions and cleanups. 2000-10-20 11:01:21 +00:00
Bruce Momjian
73677dd92f The following patch was sent to the patches list:
This patch forces the use of 'DROP VIEW' to destroy views.

It also changes the syntax of DROP VIEW to
DROP VIEW v1, v2, ...
to match the syntax of DROP TABLE.

Some error messages were changed so this patch also includes changes to the
appropriate expected/*.out files.

Doc changes for 'DROP TABLE" and 'DROP VIEW' are included.


--
Mark Hollomon
2000-10-18 16:16:18 +00:00
Vadim B. Mikheev
2e6358172f I had to change buffer tag: now RelFileNode is used instead of
LockRelId - ie physical information, not logical. It's required
for WAL. Regression tests passed.
2000-10-18 05:50:16 +00:00
Bruce Momjian
85f1950a6f Remove NO_SECURITY define. 2000-10-16 17:08:11 +00:00
Bruce Momjian
17e3e4702d Fix typo in code. 2000-10-16 16:19:14 +00:00
Vadim B. Mikheev
2c7de17b07 New file naming. Database OID is used as "tablespace" id and
relation OID is used as file node on creation but may be changed later
if required. Regression Tests Approved (c) -:)))
2000-10-16 14:52:28 +00:00
Bruce Momjian
0f07d644a3 The configure script fails to find <netinet/tcp.h>.
As a result, backend/libpq/pqcomm.c and interfaces/libpq/fe-connect.c
fail to compile.

The <netinet/tcp.h> header needs to be preceded by <netinet/in.h>, at
least on IRIX, Solaris and AIX.  The simple configure test fails.
(That header on Linux is idempotent.)

The basic problem is that <netinet/tcp.h> is a BSD header.  The
correct header for TCP internals such as TCP_NODELAY on a UNIX system
is <xti.h>.  By UNIX I mean UNIX95 (aka XPG4v2 or SUSv1) or later.
The current UNIX standard (UNIX98 aka SUSv2) is available online at
<http://www.opengroup.org/onlinepubs/7908799/>.

The fix is to add header support for <xti.h> into configure.in and
config.h.in.

The 2 files which conditionally include <netinet/tcp.h> need also to
conditionally include <xti.h>.

Pete Forman
2000-10-14 23:56:59 +00:00
Vadim B. Mikheev
deee783052 WAL 2000-10-13 12:05:22 +00:00
Vadim B. Mikheev
25a26a7ab8 WAL 2000-10-13 02:03:02 +00:00
Philip Warner
8fb04f8f98 Make setval(text,int32,bool) visible 2000-10-13 00:33:47 +00:00
Tatsuo Ishii
40184eecd5 Disable elog when linked with frontend. 2000-10-12 07:36:51 +00:00
Tatsuo Ishii
f48b9f9ec7 Support for automatic code conversion between UNICODE and other
encodings
2000-10-12 06:08:28 +00:00
Bruce Momjian
f41f8eebe7 Fix temp relation handling for indexes, cleanup 2000-10-11 21:28:19 +00:00
Philip Warner
6fec21609b Added new SQL function setval(seq,val,bool) to restore is_called as well as value
(will be used in a future pg_dump).
2000-10-11 15:31:34 +00:00
Peter Eisentraut
4d76a801c6 Unify solaris_i386 and solaris_sparc templates. They were almost identical
anyway, the rest being due to them not being kept in sync.  Add configure
test for lorder and use it (on Solaris) when found.
2000-10-10 21:22:29 +00:00
Tatsuo Ishii
2af8b963f1 Add runtime configuration option "silent_mode".
This is equivalent to postmaster's -S option.
2000-10-08 09:25:38 +00:00
Bruce Momjian
be58282516 Tom Lane wrote:
> > For a while I though it might be because we are using an alpha TAS in
> > the spinlock rather than the old semaphore. I replaced our spinlock
> > with the standard one and it made no difference. We have been running
> > with our spinlock implementation for nearly 2 months on a production
> > database now without a hitch, so I think it is ok. Did I ever submit
> > any patches for the Alpha spinlock?
>
> Not that I recall.  We did get some advice from some Alpha gurus at DEC
> who seemed to think the existing TAS code is OK.  What was it that you
> felt needed to be improved?

The current code uses semaphores, which has the advantage that it works
well even on multi-processor machines, but the disadvantage that it is not
the fastest way possible. Writing a spinlock on Alpha for SMP machines is
very difficult, as you need to deal with memory barriers. A real mess. But
then one of the people at Compaq pointed out to us that there is a
ready-made routine on Alpha. We implemented it with the two patches below.
I ran tests with lots of parallel back-ends and got around a 10% speed
increase. I include the two patches. Perhaps some of the other people
running Tru64 can have a look at these as well.

Cheers,

Adriaan Joubert
2000-10-08 04:38:21 +00:00
Bruce Momjian
e5e5de8e8c Back out:
> this is patch v 0.4 to support transactions with BLOBs.
> All BLOBs are in one table. You need to make initdb.
>
> --
> Sincerely Yours,
> Denis Perchine
2000-10-08 03:53:15 +00:00
Bruce Momjian
cf5a950c10 Hello,
this is patch v 0.4 to support transactions with BLOBs.
All BLOBs are in one table. You need to make initdb.

--
Sincerely Yours,
Denis Perchine
2000-10-08 03:18:57 +00:00
Bruce Momjian
7ea8403c8a The beos port in the source tree doesn't even compile. and even
after that dynamic loading isn't working and shared memory handling is
broken.

        Attached with this message, there is a Zip file which contain :

        * beos.diff = patch file generated with difforig
        * beos = folder with beos support files which need to be moved in /
src/backend/port
        * expected = foler with three file for message and precision
difference in regression test
        * regression.diff = rule problem (need to kill the backend manualy)
        * dynloader = dynloader files (they are also in the pacth files,
but there is so much modification that I have join full files)

        Everything works except a problem in 'rules' Is there some problems
with rules in the current tree ? It used to works with last week tree.

Cyril VELTER
2000-10-07 14:39:21 +00:00
Tom Lane
fbd26d6984 Arrange that no database accesses are attempted during parser() --- this
took some rejiggering of typename and ACL parsing, as well as moving
parse_analyze call out of parser().  Restructure postgres.c processing
so that parse analysis and rewrite are skipped when in abort-transaction
state.  Only COMMIT and ABORT statements will be processed beyond the raw
parser() phase.  This addresses problem of parser failing with database access
errors while in aborted state (see pghackers discussions around 7/28/00).
Also fix some bugs with COMMIT/ABORT statements appearing in the middle of
a single query input string.
Function, operator, and aggregate arguments/results can now use full
TypeName production, in particular foo[] for array types.
DROP OPERATOR and COMMENT ON OPERATOR were broken for unary operators.
Allow CREATE AGGREGATE to accept unquoted numeric constants for initcond.
2000-10-07 00:58:23 +00:00
Bruce Momjian
b32685a999 Add proofreader's changes to docs.
Fix misspelling of disbursion to dispersion.
2000-10-05 19:48:34 +00:00
Tom Lane
05e3d0ee86 Reimplementation of UNION/INTERSECT/EXCEPT. INTERSECT/EXCEPT now meet the
SQL92 semantics, including support for ALL option.  All three can be used
in subqueries and views.  DISTINCT and ORDER BY work now in views, too.
This rewrite fixes many problems with cross-datatype UNIONs and INSERT/SELECT
where the SELECT yields different datatypes than the INSERT needs.  I did
that by making UNION subqueries and SELECT in INSERT be treated like
subselects-in-FROM, thereby allowing an extra level of targetlist where the
datatype conversions can be inserted safely.
INITDB NEEDED!
2000-10-05 19:11:39 +00:00
Vadim B. Mikheev
5800c6b9aa Btree WAL logging. 2000-10-04 00:04:43 +00:00
Peter Eisentraut
831e78e0c4 Better coding of readline tests 2000-10-03 19:50:21 +00:00
Bruce Momjian
87c0e623ba New diff that now covers the entire tree. Applying this gets postgresql
working on the VERY latest version of BeOS.  I'm sure there will be
alot of comments, but then if there weren't I'd be disappointed!

Thanks for your continuing efforts to get this into your tree.

Haven't bothered with the new files as they haven't changed.

BTW Peter, the compiler is "broken" about the bool define and so on.
I'm filing a bug report to try and get it addressed.  Hopefully then we
can tidy up the code a bit.

I await the replies with interest :)

David Reid
2000-10-03 03:11:26 +00:00
Peter Eisentraut
416bbbffa3 Banish caddr_t (mostly), use Datum where appropriate. 2000-10-02 19:42:56 +00:00
Bruce Momjian
7a7e0240ea Here is the first batch of files and diffs for the BeOS port. I've run into
problems with some bits of it, but when all the patches are in it'll build
and we can fix it from there :)  I've got a version that builds and runs and
that is the basis for these patches.

The first file has the new additional files that are required,
    template/beos
    backend/port/dynloader/beos.c
    backend/port/dynloader/beos.h
    include/port/beos.h
    makefiles/Makefile.beos

The second is a tarball of diffs against a few files.  I've added sys/ipc.h
to configure and config.h via configure.in and config.h.in and then started
adding the check as this file isn't needed on BeOS and having loads of
#ifdef BEOS isn't as obvious as #ifdef HAVE_SYS_IPC_H and isn't as
autconf'ish :)
Files touched are
    include/c.h
    configure.in
    include/config.h.in
    include/storage/ipc.h
    include/utils/int8.h

Let me know how these go.  I'll await a response before submitting any more.

Any problems just get in touch.

David Reid
2000-10-02 17:16:01 +00:00
Tom Lane
7215f74b89 Make default ACL be consistent --- ie, starting point for ChangeAcl
is the same as the access permissions granted when a relation's relacl
field is NULL, ie, owner=all rights, world=no rights.
2000-10-02 04:49:28 +00:00
Bruce Momjian
469ebeefd6 Please apply the following patch to fix problems with the AIX port
and the fmgr redesign.

It makes the homebrewn dl*() functions for more recent Versions of AIX
obsolete
by using the system dl*() functions instead.

It also fixes the expected file for the horology regression test.
Please regenerate configure from configure.in, I don't have the
environment/time.

Andreas
2000-09-29 22:00:49 +00:00
Tom Lane
3a94e789f5 Subselects in FROM clause, per ISO syntax: FROM (SELECT ...) [AS] alias.
(Don't forget that an alias is required.)  Views reimplemented as expanding
to subselect-in-FROM.  Grouping, aggregates, DISTINCT in views actually
work now (he says optimistically).  No UNION support in subselects/views
yet, but I have some ideas about that.  Rule-related permissions checking
moved out of rewriter and into executor.
INITDB REQUIRED!
2000-09-29 18:21:41 +00:00
Peter Eisentraut
2a7da3f564 Standardize on __CYGWIN__ rather than __CYGWIN32__ macro. Doesn't matter
either way (although the former is preferred by the Cygwin folks
themselves), but using only one seems nicer.
2000-09-29 13:53:35 +00:00
Peter Eisentraut
664ce79dd8 Fixes for Cygwin, with help from Pete Forman <gsez020@kryten.bedford.waii.com>.
Update the installation instructions (formerly misnamed "FAQ"), add configure
checks for some headers rather than having users copy stubs manually (ugh!).
Use Autoconf check for exe extension.  This also avoids inheriting the value
of $(X) from the environment.
2000-09-27 15:17:57 +00:00
Tom Lane
8bdc2bf030 Use variable aliases, if supplied, rather than real column names in
complaints about ungrouped variables.  This is for consistency with
behavior elsewhere, notably the fact that the relname is reported as
an alias in these same complaints.  Also, it'll work with subselect-
in-FROM where old code didn't.
2000-09-25 18:14:55 +00:00
Tom Lane
74f0b61bf4 Karel missed an ichar->chr ... 2000-09-25 16:36:36 +00:00
Bruce Momjian
ebdfac3bb1 the patch include:
- rename ichar() to chr() (discussed with Tom)

        - add docs for oracle compatible routines:

                btrim()
                ascii()
                chr()
                repeat()

        - fix bug with timezone in to_char()

        - all to_char() variants return NULL instead textin("")
          if it's needful.

 The contrib/odbc is without changes and contains same routines as main
tree ... because I not sure how plans are Thomas with this :-)

                                        Karel
---------------------------------------------------------------------------

This effectively one line patch should fix the fact that
foreign key definitions in create table were erroring if
a primary key was defined.  I was using the columns
list to get the columns of the table for comparison, but
it got reused as a temporary list inside the primary key
stuff.

Stephan Szabo
2000-09-25 12:58:47 +00:00
Tom Lane
ba2ea6e0f5 Fix GEQO optimizer to work correctly with new outer-join-capable
query representation.  Note that GEQO_RELS setting is now interpreted
as the number of top-level items in the FROM list, not necessarily the
number of relations in the query.  This seems appropriate since we are
only doing join-path searching over the top-level items.
2000-09-19 18:42:34 +00:00
Peter Eisentraut
457ac0331c Implement differentiation between CURRENT_USER and SESSION_USER as per SQL.
There is still no effective difference but it will kick in once setuid
functions exist (not included here).  Make old getpgusername() alias for
current_user.
2000-09-19 18:18:04 +00:00
Peter Eisentraut
335248c9b7 Support for DESTDIR make variable. This is used as in `make install
DESTDIR=/else/where' and prepends the value of DESTDIR to the full
installation paths (e.g., /else/where/usr/local/pgsql/bin). This allows
users to install the package into a location different from the one that
was configured and hard-coded into various scripts, e.g., for creating
binary packages.

DESTDIR is in many cases preferrable over `make install
prefix=/else/where' because

a) `prefix' affects the path that is hard-coded into the files, which can
lead to a `make install prefix=xxx' (as done by the regression test
driver) corrupting the files in the source tree with wrong paths.

b) it doesn't work at all if a directory was overridden to not depend on
`prefix', e.g., --sysconfdir=/etc.

(Updating the regression test driver to use DESTDIR is a separate
undertaking.)

See also autoconf@gnu.org, From: Akim Demaille <akim@epita.fr>, Date: 08
Sep 2000 12:48:59 +0200, Message-ID:
<mv4em2vb1lw.fsf@nostromo.lrde.epita.fr>, Subject: Re: HTML format
documentation.
2000-09-17 13:02:52 +00:00
Tom Lane
8ae9ad1cb8 Reimplement LIKE/ESCAPE as operators so that indexscan optimization
can still work, per recent discussion on pghackers.  Correct some bugs
in ILIKE implementation.
2000-09-15 18:45:31 +00:00
Tom Lane
ed5003c584 First cut at full support for OUTER JOINs. There are still a few loose
ends to clean up (see my message of same date to pghackers), but mostly
it works.  INITDB REQUIRED!
2000-09-12 21:07:18 +00:00
Vadim B. Mikheev
8e95321476 Btree WAL records. 2000-09-12 06:07:52 +00:00
Bruce Momjian
7f171b599a This patch implements the following command:
ALTER TABLE <tablename> OWNER TO <username>

Only a superuser may execute the command.

--
Mark Hollomon
mhh@mindspring.com
2000-09-12 05:09:57 +00:00
Bruce Momjian
264c068207 This patch implements a different "relkind"
for views. Views are now have a "relkind" of
RELKIND_VIEW instead of RELKIND_RELATION.

Also, views no longer have actual heap storage
files.

The following changes were made

1. CREATE VIEW sets the new relkind

2. The executor complains if a DELETE or
        INSERT references a view.

3. DROP RULE complains if an attempt is made
        to delete a view SELECT rule.

4. CREATE RULE "_RETmytable" AS ON SELECT TO mytable DO INSTEAD ...
        1. checks to make sure mytable is empty.
        2. sets the relkind to RELKIND_VIEW.
        3. deletes the heap storage files.
5. LOCK myview is not allowed. :)


6. the regression test type_sanity was changed to
        account for the new relkind value.

7. CREATE INDEX ON myview ... is not allowed.

8. VACUUM myview is not allowed.
        VACUUM automatically skips views when do the entire
        database.

9. TRUNCATE myview is not allowed.


THINGS LEFT TO THINK ABOUT

o pg_views

o pg_dump

o pgsql (\d \dv)
o Do we really want to be able to inherit from views?

o Is 'DROP TABLE myview' OK?

--
Mark Hollomon
2000-09-12 04:49:17 +00:00
Vadim B. Mikheev
b09bd214aa This is temporal place holder for Relation File Node till
reloid.version/unique_id file naming is not implemented
2000-09-10 00:06:52 +00:00
Vadim B. Mikheev
f2bfe8a24c Heap redo/undo (except for tuple moving used by vacuum). 2000-09-07 09:58:38 +00:00
Peter Eisentraut
ffd9aaa0a9 A bit of cleanup after SSL patch. Add it to config file, improve
documentation.
2000-09-06 19:54:52 +00:00
Peter Eisentraut
6dc249610a Code cleanup of user name and user id handling in the backend. The current
user is now defined in terms of the user id, the user name is only computed
upon request (for display purposes). This is kind of the opposite of the
previous state, which would maintain the user name and compute the user id
for permission checks.

Besides perhaps saving a few cycles (integer vs string), this now creates a
single point of attack for changing the user id during a connection, for
purposes of "setuid" functions, etc.
2000-09-06 14:15:31 +00:00
Jan Wieck
daf1e3a702 Added functions
quote_ident(text) returns text
    quote_literal(text) returns text

These are handy to build up properly quoted query strings
for the new PL/pgSQL EXECUTE functionality to submit
dynamic DDL statements.

Jan
2000-09-05 20:25:14 +00:00