Internal functions to support newest ODBC driver {fn ...} conventions.
Includes compiled code to support pre-7.0 backends, but for 7.0 only
requires executing odbc.sql.
Bruce Momjian [Tue, 11 Apr 2000 14:43:54 +0000 (14:43 +0000)]
Attached is are diffs for CREATE/ALTER table doc I've
forgotten in my mailbox (sorry). Haven't tried to apply and
since I don't have working sgml stuff cannot check.
Tom Lane [Mon, 10 Apr 2000 23:41:52 +0000 (23:41 +0000)]
Tweak smgrblindwrt per advice from Vadim: add parameter indicating
whether to do fsync or not, and if so (which should be seldom) just
do the fsync immediately. This way we need not build data structures
in md.c/fd.c for blind writes.
Bruce Momjian [Mon, 10 Apr 2000 19:25:29 +0000 (19:25 +0000)]
The constant in backend/utils/misc/trace.c, line 32 limits the length of
logged queries to 1024, truncating longer queries. That is about half of
the size I need (I have a union that is 2K long). Can someone consider
bumping it to 4K or so? Patch attached...
Tom Lane [Sun, 9 Apr 2000 04:43:20 +0000 (04:43 +0000)]
Buffer manager modifications to keep a local buffer-dirtied bit as well
as a shared dirtybit for each shared buffer. The shared dirtybit still
controls writing the buffer, but the local bit controls whether we need
to fsync the buffer's file. This arrangement fixes a bug that allowed
some required fsyncs to be missed, and should improve performance as well.
For more info see my post of same date on pghackers.
Tom Lane [Sat, 8 Apr 2000 19:29:40 +0000 (19:29 +0000)]
Tweak TypeCategory to treat new BIT types as of STRING category, rather
than not knowing what they are at all. Perhaps they should have their own
type category? Hard to say. In the meantime, doing it this way allows
SELECT 'unknown' || 'unknown' to continue being resolved as textcat,
instead of spitting out an ambiguous-operator error.
Tom Lane [Sat, 8 Apr 2000 00:21:15 +0000 (00:21 +0000)]
Add copyObject logic for TruncateStmt and a few other utility-statement
parse node types. This allows these statements to be placed in a plpgsql
function. Also, see to it that statement types not handled by the copy
logic will draw an appropriate elog(ERROR), instead of leaving a null
pointer that will cause coredump later on. More utility statements could
be added if anyone felt like turning the crank.
Add transcendental math functions (sine, cosine, etc)
Add a random number generator and seed setter (random(), SET SEED)
Fix up the interval*float8 math to carry partial months
into the time field.
Add float8*interval so we have symmetry in the available math.
Fix the parser and define.c to accept SQL92 types as field arguments.
Fix the parser to accept SQL92 types for CREATE TYPE, etc. This is
necessary to allow...
Bit/varbit support in contrib/bit cleaned up to compile and load
cleanly. Still needs some work before final release.
Implement the "SOME" keyword as a synonym for "ANY" per SQL92.
Implement ascii(text), ichar(int4), repeat(text,int4) to help
support the ODBC driver.
Enable the TRUNCATE() function mapping in the ODBC driver.
Tom Lane [Fri, 7 Apr 2000 00:59:17 +0000 (00:59 +0000)]
Fix (I hope) resource leakage in EvalPlanQual: open subplans must be
properly shut down in EndPlan, else we fail to free buffers and so forth
that they hold.
Tom Lane [Fri, 7 Apr 2000 00:30:41 +0000 (00:30 +0000)]
Partial fix for EvalPlanQual bugs reported by Magnus Hagander, 3-Apr.
Ensure that outer tuple link needed for inner indexscan qual evaluation
gets set in the EvalPlanQual case. This stops coredump, but we still
have resource leaks due to failure to clean up EvalPlanQual properly...
Bruce Momjian [Wed, 5 Apr 2000 14:47:21 +0000 (14:47 +0000)]
Please forget all I said about gcc and AIX in my previous mail.
It does work with the following patch applied and gcc 2.95.2 .
Use --with-template=aix_gcc to compile the whole lot with gcc.
The geometry regression test produces different precision.
With optimization I run into regression failures starting at oidjoins,
thus no -O2. Anybody else try gcc 2.95.2 and -O2 on beta4 ?
This is an important patch, since recent versions of the IBM compiler
are not for free, and thus most questions I get concern gcc.
Tom Lane [Tue, 4 Apr 2000 23:52:50 +0000 (23:52 +0000)]
Actually, that still wasn't quite right. If we skip a query because of
xact abort state in pg_exec_query_dest, we should continue scanning the
querytree list, on the off chance that one of the later queries in the
string is COMMIT or ROLLBACK.
Tom Lane [Tue, 4 Apr 2000 21:44:40 +0000 (21:44 +0000)]
Fix bug noted by Bruce: FETCH in an already-aborted transaction block
would crash, due to premature invocation of SetQuerySnapshot(). Clean
up problems with handling of multiple queries by splitting
pg_parse_and_plan into two routines. The old code would not, for
example, do the right thing with END; SELECT... submitted in one query
string when it had been in transaction abort state, because it'd decide
to skip planning the SELECT before it had executed the END. New
arrangement is simpler and doesn't force caller to plan if only
parse+rewrite is needed.
Tom Lane [Tue, 4 Apr 2000 05:22:46 +0000 (05:22 +0000)]
Add a check to pg_dump to see whether backend is same version as pg_dump.
If not, abort by default. Abort can be prevented by using -i or
--ignore-version switch.
Tom Lane [Tue, 4 Apr 2000 02:30:52 +0000 (02:30 +0000)]
When rewriting an aggregate introduced into WHERE, allow agg argument to
be an expression not just a simple Var, so long as only one table is
referenced (so that code isn't really any more difficult than before).
This whole thing is still fundamentally bogus, but at least we can accept
a few more cases than before.
Tom Lane [Tue, 4 Apr 2000 01:21:48 +0000 (01:21 +0000)]
Fix extremely nasty little bug observed when a sub-SELECT appears in
WHERE in a place where it can be part of a nestloop inner indexqual.
As the code stood, it put the same physical sub-Plan node into both
indxqual and indxqualorig of the IndexScan plan node. That confused
later processing in the optimizer (which expected that tracing the
subPlan list would visit each subplan node exactly once), and would
probably have blown up in the executor if the planner hadn't choked first.
Fix by making the 'fixed' indexqual be a complete deep copy of the
original indexqual, rather than trying to share nodes below the topmost
operator node. This had further ramifications though, because we were
making the aforesaid list of sub-Plan nodes during SS_process_sublinks
which is run before construction of the 'fixed' indexqual, meaning that
the copy of the sub-Plan didn't show up in that list. Fix by rearranging
logic so that the sub-Plan list is built by the final set_plan_references
pass, not in SS_process_sublinks. This may sound like a mess, but it's
actually a good deal cleaner now than it was before, because we are no
longer dependent on the assumption that planning will never make a copy
of a sub-Plan node.
Augment the function call map logic with code from Tom Lane.
Should be more robust to overflows.
Pass through an unmapped function unchanged, rather than rejecting it.
Add a few more functions, but comment out those which can go through as-is.
Can be used with contrib/odbc/ package, though that isn't committed yet.
Bruce Momjian [Mon, 3 Apr 2000 20:56:40 +0000 (20:56 +0000)]
Hi,
here is an updated version of the bit type with a bugfix and all the necessa
ry
SQL functions defined. This should replace what is currently in contrib. I'd
appreciate any comments on what is there.
Tom Lane [Fri, 31 Mar 2000 19:39:22 +0000 (19:39 +0000)]
Fix low-probability bug in relcache startup: write_irels wrote the
pg_internal.init file in-place, which meant that if another backend
started at about the same time, it might read the incomplete file.
init_irels tries to guard against that, but I have now seen a crash
due to reading bad data from a partly-written file. (This may indicate
a kernel bug on my platform? Not sure.) Anyway, clearly the safest
course is to write the new pg_internal.init file under a unique temporary
filename, and rename it into place only after it's all written.