summaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_expr.c
AgeCommit message (Collapse)Author
1999-12-24Clean up handling of explicit NULL constants. Cases likeTom Lane
SELECT null::text; SELECT int4fac(null); work as expected now. In some cases a NULL must be surrounded by parentheses: SELECT 2 + null; fails SELECT 2 + (null); OK This is a grammatical ambiguity that seems difficult to avoid. Other than that, NULLs seem to behave about like you'd expect. The internal implementation is that NULL constants are typed as UNKNOWN (like untyped string constants) until the parser can deduce the right type.
1999-12-17Reverse out nextval patch.Bruce Momjian
1999-12-16>Turning nextval and currval into keywords is not an acceptable way toBruce Momjian
>go about this. That will risk breaking existing applications that use >those names as column names. > >It should actually almost work to write sq.nextval as things stand, >because Postgres has for a long time considered table.function and >function(table) to be interchangeable notations for certain kinds of >functions. nextval doesn't seem to be one of that kind of function, >at the moment. I'd suggest leaving the grammar as it was, and taking a >look at ParseFuncOrColumn in parse_func.c to see if you can't persuade >it to accept the sequence functions in that style. OK, good point. I tried to implement it somewhere else and ended up extending transformAttr. Attached you'll find the patch. Jeroen van Vianen
1999-12-10Teach grammar and parser about aggregate(DISTINCT ...). No implementationTom Lane
yet, but at least we can give a better error message: regression=> select count(distinct f1) from int4_tbl; ERROR: aggregate(DISTINCT ...) is not implemented yet instead of 'parser: parse error at or near distinct'.
1999-11-15Implement subselects in target lists. Also, relax requirement thatTom Lane
subselects can only appear on the righthand side of a binary operator. That's still true for quantified predicates like x = ANY (SELECT ...), but a subselect that delivers a single result can now appear anywhere in an expression. This is implemented by changing EXPR_SUBLINK sublinks to represent just the (SELECT ...) expression, without any 'left hand side' or combining operator --- so they're now more like EXISTS_SUBLINK. To handle the case of '(x, y, z) = (SELECT ...)', I added a new sublink type MULTIEXPR_SUBLINK, which acts just like EXPR_SUBLINK used to. But the grammar will only generate one for a multiple-left-hand-side row expression.
1999-09-13Allow CASE statement to contain *only* untyped result clauses or nulls.Thomas G. Lockhart
Almost worked before, but forgot one place to check. Reported by Tatsuo Ishii. Still does not do the right thing if inserting into a non-string target column. Should look for a type coersion later, but doesn't.
1999-08-25Revise implementation of SubLinks so that there is a consistent,Tom Lane
documented intepretation of the lefthand and oper fields. Fix a number of obscure problems while at it --- for example, the old code failed if the parser decided to insert a type-coercion function just below the operator of a SubLink. CAUTION: this will break stored rules that contain subplans. You may need to initdb.
1999-08-05Revise parse_coerce() to handle coercion of int and floatTom Lane
constants, not only string constants, at parse time. Get rid of parser_typecast2(), which is bogus and redundant...
1999-07-19Rewrite parser's handling of INSERT ... SELECT so that processingTom Lane
of the SELECT part of the statement is just like a plain SELECT. All INSERT-specific processing happens after the SELECT parsing is done. This eliminates many problems, e.g. INSERT ... SELECT ... GROUP BY using the wrong column labels. Ensure that DEFAULT clauses are coerced to the target column type, whether or not stored clause produces the right type. Substantial cleanup of parser's array support.
1999-07-17 Move some system includes into c.h, and remove duplicates.Bruce Momjian
1999-07-16Support subscripts on bare column names.Tom Lane
1999-07-16Final cleanup.Bruce Momjian
1999-07-15Remove unused #includes in *.c files.Bruce Momjian
1999-07-11Ignore resjunk targetlist entries when matching arguments toTom Lane
a SubLink with the subplan's targetlist. This fixes a problem seen with, for example, a subselect that uses GROUP BY.
1999-05-26Make functions static or NOT_USED as appropriate.Bruce Momjian
1999-05-25pgindent run over code.Bruce Momjian
1999-05-22Fix for DEFAULT ''.Bruce Momjian
1999-05-18Add Aggref and ArrayRef to the set of node types that transformExprTom Lane
will pass through rather than spitting up. This is necessary to handle cases where coerce_type causes a subexpression to be retransformed, as in SELECT count(*) + 1.0 FROM table
1999-05-13Rip out QueryTreeList structure, root and branch. QuerytreeTom Lane
lists are now plain old garden-variety Lists, allocated with palloc, rather than specialized expansible-array data allocated with malloc. This substantially simplifies their handling and eliminates several sources of memory leakage. Several basic types of erroneous queries (syntax error, attempt to insert a duplicate key into a unique index) now demonstrably leak zero bytes per query.
1999-05-12Handle conversion of floating point constants to internal strings.Thomas G. Lockhart
1999-04-23Add disk space message to "can not extend" message.Bruce Momjian
1999-04-19Fix problems seen when result of a subselect was used in anTom Lane
expression context (ie, not at the top level of a WHERE clause). Examples like this one work now: SELECT name, value FROM t1 as touter WHERE (value/(SELECT AVG(value) FROM t1 WHERE name = touter.name)) > 0.75;
1999-04-18After transforming a CASE expr with a default argument,Tom Lane
delete the default argument from the node. This prevents the executor from spitting up on the untransformed argument expression. Typical failure was: select (case f1 when 'val' then 'subst' else f1 end) from t1; ERROR: copyObject: don't know how to copy 704
1999-02-03Cleanup of source files where 'return' or 'var =' is alone on a line.Bruce Momjian
1999-01-24Rename Aggreg to Aggref.Bruce Momjian
1998-12-13Improve CASE statement support.Thomas G. Lockhart
Try to label CASE columns for a SELECT if not specified with an AS clause.
1998-12-04Implement CASE expression.Thomas G. Lockhart
1998-10-02 the following little patch adds array references to queryBruce Momjian
parameters. With it applied a function like CREATE FUNCTION getname(oid8, int4) RETURNS name AS 'SELECT typname FROM pg_type WHERE oid = $1[$2]' LANGUAGE 'sql'; is possible. Mainly I need this to enable array references in expressions for PL/pgSQL. Complete regression test ran O.K. Jan
1998-10-01Fix for constbyval.Bruce Momjian
1998-09-01OK, folks, here is the pgindent output.Bruce Momjian
1998-09-01Renaming cleanup, no pgindent yet.Bruce Momjian
1998-07-12Change atttypmod from int16 to int32, for Thomas.Bruce Momjian
1998-07-08Allow floating point constants for "def_arg" numeric arguments.Thomas G. Lockhart
Used in the generic "CREATE xxx" parsing. Do some automatic type conversion for inserts from other columns. Previous trouble with "resjunk" regression test remains for now.
1998-06-15Remove un-needed braces around single statements.Bruce Momjian
1998-05-29Do type conversion to match columns in UNION clauses.Thomas G. Lockhart
Currently force the type to match the _first_ select in the union. Move oper_select_candidate() from parse_func.c to parse_oper.c. Throw error inside of oper_inexact() if no match for binary operators. Check more carefully that types can be coerced even if there is only one candidate operator in oper_inexact(). Fix up error messages for more uniform look. Remove unused code. Fix up comments.
1998-05-09Add capabilities for automatic type conversion.Thomas G. Lockhart
1998-04-26Re-apply Darren's char2-16 removal code.Bruce Momjian
1998-04-07Back out char2-char16 removal. Add later.Bruce Momjian
1998-03-30The following uuencoded, gzip'd file will ...Bruce Momjian
1. Remove the char2, char4, char8 and char16 types from postgresql 2. Change references of char16 to name in the regression tests. 3. Rename the char16.sql regression test to name.sql. 4. Modify the regression test scripts and outputs to match up. Might require new regression.{SYSTEM} files... Darren King
1998-03-26BETWEEN and LIKE patch from ThomasBruce Momjian
1998-02-27In '(a,b,...) Op [ANY|ALL] (SubSelect)' Op is restricted toVadim B. Mikheev
'=' and '<>'.
1998-02-26pgindent run before 6.3 release, with Thomas' requested changes.Bruce Momjian
1998-02-13gram.y: ALL_SUBLINK type was returned for x Op (subquery).Vadim B. Mikheev
parse_expr.c: only Op of bool type are supported currently...
1998-02-13Fix for EXISTS.Vadim B. Mikheev
1998-02-10Pass around typmod as int16.Bruce Momjian
1998-02-07atttypmod now -1.Bruce Momjian
1998-02-06FIx hasSubLinks for Vadim.Bruce Momjian
1998-02-05Fix for varchar functions, and indextyple j-1 fix.Bruce Momjian
1998-02-03Parser cleanup for expr and subqueries.Bruce Momjian
1998-02-01Fix for psort. fixes regression tests.Bruce Momjian