1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-13 16:22:44 +03:00
Commit Graph

3228 Commits

Author SHA1 Message Date
Tom Lane
87e701b8d5 Clean up const-vs-not-const compiler warning in MULTIBYTE code.
'Twas my fault, I think.
2000-04-20 22:40:18 +00:00
Tom Lane
7c22d2e5f0 Correct error in rewriter that caused SELECT count(*) FROM view
to give wrong results: it should be looking at inJoinSet not inFromCl.
Also, make 'modified' flag be local to ApplyRetrieveRule: we should
append a rule's quals to the query iff that particular rule applies,
not if we have fired any previously-considered rule for the query!
2000-04-20 00:31:49 +00:00
Tom Lane
32e192d712 Repair coredump seen when a view refers to an inheritance group
(SELECT FROM table*).  Cause was reference to 'eref' field of an RTE,
which is null in an RTE loaded from a stored rule parsetree.  There
wasn't any good reason to be touching the refname anyway...
2000-04-18 05:52:35 +00:00
Tom Lane
25442d8d2f Correct oversight in hashjoin cost estimation: nodeHash sizes its hash
table for an average of NTUP_PER_BUCKET tuples/bucket, but cost_hashjoin
was assuming a target load of one tuple/bucket.  This was causing a
noticeable underestimate of hashjoin costs.
2000-04-18 05:43:02 +00:00
Tom Lane
82849df6c6 Add new selectivity estimation functions for pattern-matching operators
(LIKE and regexp matches).  These are not yet referenced in pg_operator,
so by default the system will continue to use eqsel/neqsel.
Also, tweak convert_to_scalar() logic so that common prefixes of strings
are stripped off, allowing better accuracy when all strings in a table
share a common prefix.
2000-04-16 04:41:03 +00:00
Tom Lane
8c3b52e7b2 Allow COPY WITH OIDS to system OID values --- rely on unique indexes to
prevent duplicate OIDs from being added.  Clean up redundant error
messages.
2000-04-16 04:27:52 +00:00
Tom Lane
a6acf1a06a Show failing OID in 'cache lookup failed' messages. 2000-04-16 04:25:42 +00:00
Tom Lane
1460dd0eff Show failing OID in 'cache lookup failed' messages. 2000-04-16 04:16:55 +00:00
Tom Lane
8064a49f6f get_relattval() should treat a NULL constant as a non-constant expression,
since it has no way to indicate to its caller that the constant is
actually NULL.  This prevents coredump in cases like
  WHERE textfield < null::text;
2000-04-16 01:55:45 +00:00
Tom Lane
4ca7d148cb elog(NOTICE) during COPY incorrectly reset lineno to 0, causing any
subsequent elogs() in the same COPY operation to display the wrong
line number.  Fix is to clear lineno only when elog level is such
that we will not return to caller.
2000-04-15 19:13:08 +00:00
Thomas G. Lockhart
d221e149b4 Fix (well, add) support for ISO "week" in date_part(). Needed for ODBC.
Fix spelling of "millennium".
 Thanks to Mika Nystrom <mika@camembert.cs.caltech.edu> for spotting this.
2000-04-14 15:22:10 +00:00
Tom Lane
07672d4e0a Skip setsockopt(SO_REUSEADDR) for the Unix-domain postmaster socket on
all platforms, not just SCO.  The operation is undefined for Unix-domain
sockets anyway.  It seems SCO is not the only platform that complains
instead of treating the call as a no-op.
2000-04-14 00:51:58 +00:00
Tom Lane
9d91db4fde Repair bug reported by Wickstrom: backend would crash if WHERE clause
contained a sub-SELECT nested within an AND/OR tree that cnfify()
thought it should rearrange.  Same physical sub-SELECT node could
end up linked into multiple places in resulting expression tree.
This is harmless for most node types, but not for SubLink.
Repair bug by making physical copies of subexpressions that get
logically duplicated by cnfify().  Also, tweak the heuristic that
decides whether it's a good idea to do cnfify() --- we don't really
want that to happen when it would cause multiple copies of a subselect
to be generated, I think.
2000-04-14 00:19:17 +00:00
Jan Wieck
3e00c9db4a Fixed CREATE TYPE to recognize changed parsenodes
Jan
2000-04-13 11:51:07 +00:00
Bruce Momjian
52f77df613 Ye-old pgindent run. Same 4-space tabs. 2000-04-12 17:17:23 +00:00
Bruce Momjian
37e7c7dfcb Fix assert with missing semicolon 2000-04-12 04:58:09 +00:00
Tom Lane
2692d329eb 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.
2000-04-10 23:41:52 +00:00
Bruce Momjian
a447ae2221 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...

Regards,
Ed Loehr
2000-04-10 19:25:29 +00:00
Hiroshi Inoue
8a5851880e Fix an Assert bug(was my fault) pointed out by Tom Lane. 2000-04-10 00:45:42 +00:00
Tom Lane
1f6d8b90b8 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.
2000-04-09 04:43:20 +00:00
Tom Lane
9c38a8d296 Further tweaking of indexscan cost estimates. 2000-04-09 04:31:37 +00:00
Bruce Momjian
9b7ba2002d Add new pg_options.sample file. 2000-04-08 19:38:00 +00:00
Tom Lane
bb7e5dc2c0 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.
2000-04-08 19:29:40 +00:00
Tom Lane
ed845c7374 Fix relcache refcount leakage when inv_drop is applied
to a non-LO relation.
2000-04-08 04:37:07 +00:00
Thomas G. Lockhart
0337938fbf Add zpbit and varbit data types from Adrian Joubert
<a.joubert@albourne.com>.
2000-04-08 02:13:11 +00:00
Tom Lane
dc070fdea6 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.
2000-04-08 00:21:15 +00:00
Bruce Momjian
28fb1c196b Update create_rule manual page. 2000-04-07 19:17:51 +00:00
Thomas G. Lockhart
a349733bbb 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.
2000-04-07 13:40:45 +00:00
Vadim B. Mikheev
71b4790b6d Commebts & one check in EndEvalPlanQual(). 2000-04-07 07:24:47 +00:00
Tom Lane
e4d8d43c52 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.
2000-04-07 00:59:17 +00:00
Tom Lane
891039c15f 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...
2000-04-07 00:30:41 +00:00
Bruce Momjian
65ea4f677f Allow vacuum of temporary tables 2000-04-06 18:12:07 +00:00
Tom Lane
eace269b47 Repair assert failure in tuple-chain-moving logic (introduced by yours
truly, I'm afraid).
2000-04-06 00:29:51 +00:00
Tom Lane
5240c76729 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.
2000-04-04 23:52:50 +00:00
Tom Lane
708f82f191 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.
2000-04-04 21:44:40 +00:00
Tom Lane
7fbf0af22b 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.
2000-04-04 02:30:52 +00:00
Tom Lane
1c72a8a37a 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.
2000-04-04 01:21:48 +00:00
Tom Lane
14bc951d30 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.
2000-03-31 19:39:22 +00:00
Tom Lane
ca05ba2a9d Get rid of SetBufferWriteMode(), which was an accident waiting to happen.
In the event of an elog() while the mode was set to immediate write,
there was no way for it to be set back to the normal delayed write.
The mechanism was a waste of space and cycles anyway, since the only user
was varsup.c, which could perfectly well call FlushBuffer directly.
Now it does just that, and the notion of a write mode is gone.
2000-03-31 02:43:31 +00:00
Tom Lane
5717dcb8a7 New coding for SET provoked a 'var might be used uninitialized' warning
from gcc.  Which wasn't actually a code bug, but I don't like warnings.
2000-03-31 02:11:03 +00:00
Thomas G. Lockhart
362575b782 Enable more flexible syntax for the SET command. Now allows single floats,
single integers, and lists of names, without surrounding them with quotes.
Remove all tokens which are defined as operators from ColID and ColLabel
 to avoid precedence confusion. Thanks to Tom Lane for catching this.
2000-03-30 06:02:36 +00:00
Tom Lane
e55985d3be Tweak indexscan cost estimation: round estimated # of tuples visited up
to next integer.  Previously, if selectivity was small, we could compute
very tiny scan cost on the basis of estimating that only 0.001 tuple
would be fetched, which is silly.  This naturally led to some rather
silly plans...
2000-03-30 00:53:30 +00:00
Thomas G. Lockhart
1b113a23e5 Change rules for interpreting date/time input to disallow 1 and 3 character
years. Rejects dates like '0.085', which were accepted previously.
2000-03-29 03:57:18 +00:00
Thomas G. Lockhart
2dabd2cd1f Allow full type names in CREATE FUNCTION arguments and return type.
Move CREATE FUNCTION/WITH clause to end of statement to get around
 shift/reduce conflicts with type names containing "WITH".
Add lots of tokens as allowed ColId's and/or ColLabel's,
 so this should be a complete set for the v7.0 release.
2000-03-27 17:12:06 +00:00
Tom Lane
0a27641c1a nodeAgg has always been willing to accept an aggregate with a finalFunc
and only one transition state, but the CREATE AGGREGATE code rejected
this combination.
2000-03-26 19:43:58 +00:00
Peter Eisentraut
4579e68db2 Updated user's guide to match new psql's output format
Fixed bug in createdb/alternative location
2000-03-26 18:32:30 +00:00
Tom Lane
5c462baebc transformCreateStmt should put Ident nodes, not ColumnDef nodes, into
keys lists of Constraint nodes.  This eliminates a type pun that would
probably have caused trouble someday, and eliminates circular references
in the parsetree that were causing trouble now.
Also, change parser's uses of strcasecmp() to strcmp().  Since scan.l
has downcased any unquoted identifier, it is never correct to check an
identifier with strcasecmp() in the parser.  For example,
	CREATE TABLE FOO (f1 int, UNIQUE("F1"));
was accepted, which is wrong, and xlateSqlFunc did more than it should:
select datetime();
ERROR:  Function 'timestamp()' does not exist
(good)
select "DateTime"();
ERROR:  Function 'timestamp()' does not exist
(bad)
2000-03-24 23:34:19 +00:00
Tom Lane
8cbeb5f131 Save a few cycles in simple cases: no need to call cost_sort() when there
is no presorted path to compare with.
2000-03-24 21:40:43 +00:00
Tom Lane
39cd6e2e91 outfuncs.c was missing a print routine for Material plan nodes, leading
to trouble when trying to EXPLAIN VERBOSE a plan containing one.
2000-03-24 02:58:25 +00:00
Tom Lane
eca02fee2c Rename bytea functions to not have upper-case letters in their names.
Clean up grotty coding in them, too.  AFAICS from the CVS logs, these
have been broken since Postgres95, so I'm not going to insist on an
initdb to fix them now...
2000-03-24 02:41:46 +00:00