| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
| |
is no presorted path to compare with.
|
|
|
|
| |
to trouble when trying to EXPLAIN VERBOSE a plan containing one.
|
|
|
|
|
|
| |
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...
|
|
|
|
|
|
|
| |
to avoid undue sensitivity to roundoff error, believe that a zero
or slightly negative range estimate should represent a small
positive selectivity, rather than falling back on a generic default
estimate.
|
|
|
|
|
|
| |
easy (maybe dumb) fix for 5 in attachment define.patch
greetings, Andreas
|
|
|
|
|
|
|
| |
patch in a second. Should be sufficent to just make sure the first
character is a '/', right?
Ross J. Reedstrom
|
|
|
|
| |
input, not throw a gratuitous elog().
|
|
|
|
|
| |
outside WHERE clause. Fix a couple of places that didn't handle uplevel
refs cleanly.
|
|
|
|
|
| |
nodes introduced by make_subplan(). It'd be better if we used a
different node type for subplan result placeholders, but for now...
|
|
|
|
| |
Const placeholder nodes for subplan result values.
|
|
|
|
|
|
| |
use a default value that's fairly small. We were generating a result
of about 0.1, but I think 0.01 is probably better --- want to encourage
use of an indexscan in this situation.
|
|
|
|
|
| |
to more than one character, and try to do the right thing in non-ASCII
locales.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
costs using the inner path's parent->rows count as the number of tuples
processed per inner scan iteration. This is wrong when we are using an
inner indexscan with indexquals based on join clauses, because the rows
count in a Relation node reflects the selectivity of the restriction
clauses for that rel only. Upshot was that if join clause was very
selective, we'd drastically overestimate the true cost of the join.
Fix is to calculate correct output-rows estimate for an inner indexscan
when the IndexPath node is created and save it in the path node.
Change of path node doesn't require initdb, since path nodes don't
appear in saved rules.
|
|
|
|
|
|
| |
is available yet.
Remove redundant call to xlateSqlType() in the character
type handling code.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to simplify constant expressions and expand SubLink nodes into SubPlans
is done in a separate routine subquery_planner() that calls union_planner().
We formerly did most of this work in query_planner(), but that's the
wrong place because it may never see the real targetlist. Splitting
union_planner into two routines also allows us to avoid redundant work
when union_planner is invoked recursively for UNION and inheritance
cases. Upshot is that it is now possible to do something like
select float8(count(*)) / (select count(*) from int4_tbl) from int4_tbl
group by f1;
which has never worked before.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
incorrect use of StrNCpy.
|
|
|
|
| |
leading to postmaster accepting args 1 shorter than it had room for.
|
| |
|
|
|
|
|
|
|
|
|
| |
had already been transformed. This led to failure in examples like
UPDATE table SET fld = (SELECT ...). Repair this, and revise the
comments to explain that transformExpr has to be robust against this
condition. Someday we might want to fix the callers so that
transformExpr is never invoked on its own output, but that someday
is not today.
|
|
|
|
|
|
|
|
|
|
| |
In function parsing, try for an actual function of the given name and
input types before trying to interpret the function call as a type
coercion request, rather than after. Before, a function that had the
same name as a type and operated on a binary-compatible type wouldn't
get invoked. Also, cross-pollinate between func_select_candidates and
oper_select_candidates to ensure that they use as nearly the same
resolution rules as possible. A few other minor code cleanups too.
|
|
|
|
| |
actually returns the type it is named for.
|
|
|
|
|
|
| |
problem could be lack of parentheses. This addresses cases like
X UserOp UserOp Y, which will be parsed as (X UserOp) UserOp Y,
whereas what likely was wanted was X UserOp (UserOp Y).
|
| |
|
|
|
|
|
|
|
|
|
|
| |
16-Mar-00: trailing + or - is not part of the operator unless the operator
also contains characters not present in SQL92-defined operators. This
solves the 'X=-Y' problem without unduly constraining users' choice of
operator names --- in particular, no existing Postgres operator names
become invalid.
Also, remove processing of // comments, as agreed in the same thread.
|
|
|
|
|
| |
prefix operator :-(. Bad enough that we have no implementation of
unary plus, but at least with this fix the grammar will take it.
|
| |
|
|
|
|
| |
a config.h #define, and the runtime value can be controlled via SET.
|
|
|
|
|
|
| |
running gcc and HP's cc with warnings cranked way up. Signed vs unsigned
comparisons, routines declared static and then defined not-static,
that kind of thing. Tedious, but perhaps useful...
|
|
|
|
|
|
| |
We probably support a superset of the spec, but I don't have the spec
to confirm this.
Update regression tests to include tests for this format.
|
|
|
|
|
|
| |
actually a type-coercion problem. If you have a function defined on
class A, and class B inherits from A, then the function ought to work
on class B as well --- but coerce_type didn't know that. Now it does.
|
|
|
|
|
|
|
| |
mark query as having subselects if a subselect was added from a rule
WHERE condition (as opposed to a rule action). Also, fix adjustment
of varlevelsup so that it actually has some prospect of working when
inserting an expression containing a subselect into a subquery.
|
|
|
|
|
|
|
|
|
|
| |
small changes in formatting.c code (better memory usage ...etc.) and
better
to_char's cache (will fastly for more to_char()s in one query).
(It is probably end of to_char() development in 7.0 cycle.)
Karel
|
| |
|
|
|
|
|
|
|
|
|
|
| |
after trying to resolve the item as an input-column name. This allows us
to be compliant with the SQL92 spec for queries that fall within the spec,
while still accepting the same out-of-spec queries as 6.5 did. You'll only
lose if there is an output column name that is the same as an input
column name, but doesn't refer to the same value. 7.0 will interpret
such a GROUP BY spec differently than 6.5 did. No way around that, because
6.5 was clearly not spec compliant.
|
|
|
|
| |
wrong pointer.
|
| |
|
|
|
|
|
|
|
|
| |
CREATE DB/DROP DB. If you didn't think they were wrong, try what
happens when you compile with -DCLOBBER_FREED_MEMORY --- database
name displayed in error messages is trashed, because transaction
abort freed it. Also, remove trailing periods in error messages,
per our prevailing style.
|
|
|
|
|
| |
the pain of updating apps to 7.0. Should we also translate some of
the 'datetime_foo' functions that exist in 6.* ?
|
|
|
|
|
| |
so that the fmgr lookup only has to happen once per index scan and not
once per tuple. Seems to save 5% or so of CPU time for an indexscan.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement TIME WITH TIME ZONE type (timetz internal type).
Remap length() for character strings to CHAR_LENGTH() for SQL92
and to remove the ambiguity with geometric length() functions.
Keep length() for character strings for backward compatibility.
Shrink stored views by removing internal column name list from visible rte.
Implement min(), max() for time and timetz data types.
Implement conversion of TIME to INTERVAL.
Implement abs(), mod(), fac() for the int8 data type.
Rename some math functions to generic names:
round(), sqrt(), cbrt(), pow(), etc.
Rename NUMERIC power() function to pow().
Fix int2 factorial to calculate result in int4.
Enhance the Oracle compatibility function translate() to work with string
arguments (from Edwin Ramirez).
Modify pg_proc system table to remove OID holes.
|
|
|
|
|
|
| |
of BufferLocks[] entry just once. Seems to save 10% or so of the
routine's runtime, which'd not be worth worrying about if it weren't
such a hotspot.
|
|
|
|
|
|
|
|
|
|
| |
Please
> apply the attached patch to
>
> backend/port/qnx4
>
> Andreas Kardos
>
|