summaryrefslogtreecommitdiff
path: root/src/backend/parser
AgeCommit message (Collapse)Author
2002-07-09Fix compiler warning:Bruce Momjian
int32 domainTypMod = NULL; should be: int32 domainTypMod = 0;
2002-07-06I've fixed up the way domain constraints (not null and type length)Bruce Momjian
are managed as per request. Moved from merging with table attributes to applying themselves during coerce_type() and coerce_type_typmod. Regression tests altered to test the cast() scenarios. Rod Taylor
2002-07-04Implement the IS DISTINCT FROM operator per SQL99.Thomas G. Lockhart
Reused the Expr node to hold DISTINCT which strongly resembles the existing OP info. Define DISTINCT_EXPR which strongly resembles the existing OPER_EXPR opType, but with handling for NULLs required by SQL99. We have explicit support for single-element DISTINCT comparisons all the way through to the executor. But, multi-element DISTINCTs are handled by expanding into a comparison tree in gram.y as is done for other row comparisons. Per discussions, it might be desirable to move this into one or more purpose-built nodes to be handled in the backend. Define the optional ROW keyword and token per SQL99. This allows single-element row constructs, which were formerly disallowed due to shift/reduce conflicts with parenthesized a_expr clauses. Define the SQL99 TREAT() function. Currently, use as a synonym for CAST().
2002-07-01First phase of applying Rod Taylor's pg_depend patch. This just addsTom Lane
RESTRICT/CASCADE syntax to the DROP commands that need it, and propagates the behavioral option through the parser to the routines that execute drops. Doesn't do anything useful yet, but I figured I'd commit these changes so I could get out of the parser area while working on the rest.
2002-06-22Implement SQL99 CREATE CAST and DROP CAST statements.Thomas G. Lockhart
Also implement alternative forms to expose the PostgreSQL CREATE FUNCTION features. Implement syntax for READ ONLY and READ WRITE clauses in SET TRANSACTION. READ WRITE is already implemented (of course). Implement syntax for "LIKE table" clause in CREATE TABLE. Should be fairly easy to complete since it resembles SELECT INTO. Implement MATCH SIMPLE clause for foreign key definitions. This is explicit SQL99 syntax for the default behavior, so we now support it :) Start implementation of shorthand for national character literals in scanner. For now, just swallow the leading "N", but sometime soon let's figure out how to pass leading type info from the scanner to the parser. We should use the same technique for binary and hex bit string literals, though it might be unusual to have two apparently independent literal types fold into the same storage type.
2002-06-20Update copyright to 2002.Bruce Momjian
2002-06-20Improve COPY syntax to use WITH clause, keep backward compatibility.Bruce Momjian
2002-06-19Properly mark rules that return no value.Bruce Momjian
2002-06-18Wrap long gram.y lines.Bruce Momjian
2002-06-18Change CREATE DATABASE to use DefElem instead of constructing structureBruce Momjian
members in gram.y. This is the prefered method for WITH and arbitrary param/value pairs.
2002-06-18Improve rule action ordering in gram.y, more cleanups.Bruce Momjian
2002-06-17Mark noise keyword actions with {} rather than returning TRUE, likeBruce Momjian
opt_with and from_in.
2002-06-17Manually indent gram.y to be consistent.Bruce Momjian
2002-06-17Merge ALTER GROUP ADD/DROP rules by creating add_drop action.Bruce Momjian
2002-06-17Simplify optional WITH handling in CREATE USER, ALTER USER, CREATEBruce Momjian
GROUP. Make WITH optional in CREATE DATABASE for consistency.
2002-06-15Add LOCALTIME and LOCALTIMESTAMP functions per SQL99 standard.Thomas G. Lockhart
Remove ODBC-compatible empty parentheses from calls to SQL99 functions for which these parentheses do not match the standard. Update the ODBC driver to ensure compatibility with the ODBC standard for these functions (e.g. CURRENT_TIMESTAMP, CURRENT_USER, etc). Include a new appendix in the User's Guide which lists the labeled features for SQL99 (the labeled features replaced the "basic", "intermediate", and "advanced" categories from SQL92). features.sgml does not yet split this list into "supported" and "unsupported" lists.
2002-06-13Add PLACING to the list of reserved keywords. Added as a token in the lastThomas G. Lockhart
update to support the new OVERLAY() function.
2002-06-13Repair for bug #691 --- CREATE TABLE AS column aliases fail to beTom Lane
applied when the select is a UNION (or other set-operation). An alternative route to a fix would be to leave analyze.c alone and change plan_set_operations in prepunion.c to take column names from the topmost targetlist. But I am not sure that would work in all cases. This patch seems the minimum-risk fix.
2002-06-11Implement SQL99 OVERLAY(). Allows substitution of a substring in a string.Thomas G. Lockhart
Implement SQL99 SIMILAR TO as a synonym for our existing operator "~". Implement SQL99 regular expression SUBSTRING(string FROM pat FOR escape). Extend the definition to make the FOR clause optional. Define textregexsubstr() to actually implement this feature. Update the regression test to include these new string features. All tests pass. Rename the regular expression support routines from "pg95_xxx" to "pg_xxx". Define CREATE CHARACTER SET in the parser per SQL99. No implementation yet.
2002-06-11Katherine Ward wrote:Jan Wieck
> Changes to avoid collisions with WIN32 & MFC names... > 1. Renamed: > a. PROC => PGPROC > b. GetUserName() => GetUserNameFromId() > c. GetCurrentTime() => GetCurrentDateTime() > d. IGNORE => IGNORE_DTF in include/utils/datetime.h & utils/adt/datetim > > 2. Added _P to some lex/yacc tokens: > CONST, CHAR, DELETE, FLOAT, GROUP, IN, OUT Jan
2002-05-28In default nextval('foo') expression for a SERIAL column, use doubleTom Lane
quotes only when necessary.
2002-05-22Add optional "validator" function to languages that can validate thePeter Eisentraut
function body (and other properties) as a function in the language is created. This generalizes ad hoc code that already existed for the built-in languages. The validation now happens after the pg_proc tuple of the new function is created, so it is possible to define recursive SQL functions. Add some regression test cases that cover bogus function definition attempts.
2002-05-20Restructure indexscan API (index_beginscan, index_getnext) perTom Lane
yesterday's proposal to pghackers. Also remove unnecessary parameters to heap_beginscan, heap_rescan. I modified pg_proc.h to reflect the new numbers of parameters for the AM interface routines, but did not force an initdb because nothing actually looks at those fields.
2002-05-19Reorder keyword token declarations alphabetically. Status of the keywordsPeter Eisentraut
in the various standards can be found in the documentation these days.
2002-05-18Teach query_tree_walker, query_tree_mutator, and SS_finalize_plan toTom Lane
process function RTE expressions, which they were previously missing. This allows outer-Var references and subselects to work correctly in the arguments of a function RTE. Install check to prevent function RTEs from cross-referencing Vars of sibling FROM-items, which doesn't make any sense (if you want to join, write a JOIN or WHERE clause).
2002-05-17Get rid of the last few uses of typeidTypeName() rather thanTom Lane
format_type_be() in error messages.
2002-05-17Extend syntax of CREATE FUNCTION to resemble SQL99.Peter Eisentraut
2002-05-17Merge the last few variable.c configuration variables into the genericTom Lane
GUC support. It's now possible to set datestyle, timezone, and client_encoding from postgresql.conf and per-database or per-user settings. Also, implement rollback of SET commands that occur in a transaction that later fails. Create a SET LOCAL var = value syntax that sets the variable only for the duration of the current transaction. All per previous discussions in pghackers.
2002-05-13Make operators have their own comments separate from those of theTom Lane
underlying function; but cause psql's \do to show the underlying function's comment if the operator has no comment of its own, to preserve the useful functionality of the original behavior. Also, implement COMMENT ON SCHEMA. Patch from Rod Taylor.
2002-05-12Get rid of long-since-vestigial Iter node type, in favor of adding aTom Lane
returns-set boolean field in Func and Oper nodes. This allows cleaner, more reliable tests for expressions returning sets in the planner and parser. For example, a WHERE clause returning a set is now detected and complained of in the parser, not only at runtime.
2002-05-12First pass at set-returning-functions in FROM, by Joe Conway withTom Lane
some kibitzing from Tom Lane. Not everything works yet, and there's no documentation or regression test, but let's commit this so Joe doesn't need to cope with tracking changes in so many files ...
2002-05-06Accept SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATIONTom Lane
to reset session userid to the originally-authenticated name. Also, relax SET SESSION AUTHORIZATION to allow specifying one's own username even if one is not superuser, so as to avoid unnecessary error messages when loading a pg_dump file that uses this command. Per discussion from several months ago.
2002-05-03Make ruleutils.c schema-aware. Displayed names are schema-qualifiedTom Lane
only if they would not be found without qualification given the current search path, as per idea from Peter Eisentraut.
2002-05-03Retire xlateSqlType/xlateSqlFunc; all type name translations are nowTom Lane
handled as special productions. This is needed to keep us honest about user-schema type names that happen to coincide with system type names. Per pghackers discussion 24-Apr. To avoid bloating the keyword list too much, I removed the translations for datetime, timespan, and lztext, all of which were slated for destruction several versions back anyway.
2002-05-02Tweak scanner/grammar interface so that the keyword-as-identifier rulesTom Lane
in gram.y can make use of the keywords.c string table, instead of having their own copies of the keyword strings. This saves a few kilobytes and more importantly eliminates an opportunity for cut-and-paste errors.
2002-05-01Give left_oper() and right_oper() noError parameters like oper() (theTom Lane
binary case) already has. Needed for upcoming ruleutils change.
2002-05-01Improve lexer's error reporting. You get the whole token mentioned nowTom Lane
in parse error messages, not just the part scanned by the last flex rule. For example, select "foo" "bar"; used to draw ERROR: parser: parse error at or near """ which was rather unhelpful. Now it gives ERROR: parser: parse error at or near ""bar"" Also, error messages concerning bitstring literals and suchlike will quote the source text at you, not the processed internal form of the literal.
2002-04-28Second try at fixing join alias variables. Instead of attaching miscellaneousTom Lane
lists to join RTEs, attach a list of Vars and COALESCE expressions that will replace the join's alias variables during planning. This simplifies flatten_join_alias_vars while still making it easy to fix up varno references when transforming the query tree. Add regression test cases for interactions of subqueries with outer joins.
2002-04-28Make ruleutils.c use format_type for printing typenames. Minor tweaksTom Lane
in quoting rules and recognition of implicit type coercions.
2002-04-25Implement types regprocedure, regoper, regoperator, regclass, regtypeTom Lane
per pghackers discussion. Add some more typsanity tests, and clean up some problems exposed thereby (broken or missing array types for some built-in types). Also, clean up loose ends from unknownin/out patch.
2002-04-24Attached is a patch for ALTER TRIGGER RENAME per the above thread. IBruce Momjian
left a stub for a future "ALTER RULE RENAME" but did not write that one yet. Bruce, if you want to add my name for for that I'll take it and do it later. Joe Conway
2002-04-24Reports missing values as bad.Bruce Momjian
BAD: INSERT INTO tab (col1, col2) VALUES ('val1'); GOOD: INSERT INTO tab (col1, col2) VALUES ('val1', 'val2'); Regress tests against DEFAULT and normal values as they're managed slightly different. Rod Taylor
2002-04-21Oops. Remove declaration for set_name_needs_quotes(), since it is now gone.Thomas G. Lockhart
2002-04-21Remove the definition for set_name_needs_quotes() on the assumption thatThomas G. Lockhart
it is now obsolete. Need some regression test cases to prove otherwise...
2002-04-21Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types.Thomas G. Lockhart
This is a big change from past behavior, but the last release was designed to handle this correctly for dump/restore upgrades. Fix up handling of SET value arguments. Allow lists for most options at least at the parser level; multiple values may be rejected at the command processor of course. Allow more variations on values for SET commands, including integer and float values where formerly stringy fields were required. Check precision specification for date/time fields against the true precision range allowed by the data types. Especially useful with the new int8-based storage for these types, where precision is fixed and predictable. Stub out a basic CREATE ASSERTION per SQL9x. Does not do anything (yet) but should be augmented as appropriate. Minor fixups in braces and tabbing.
2002-04-21Restructure AclItem representation so that we can have more than eightTom Lane
different privilege bits (might as well make use of the space we were wasting on padding). EXECUTE and USAGE bits for procedures, languages now are separate privileges instead of being overlaid on SELECT. Add privileges for namespaces and databases. The GRANT and REVOKE commands work for these object types, but we don't actually enforce the privileges yet...
2002-04-20Scanner performance improvementsPeter Eisentraut
Use flex flags -CF. Pass the to-be-scanned string around as StringInfo type, to avoid querying the length repeatedly. Clean up some code and remove lex-compatibility cruft. Escape backslash sequences inline. Use flex-provided yy_scan_buffer() function to set up input, rather than using myinput().
2002-04-18Make PUBLIC an unreserved word (in fact, not a keyword at all),Tom Lane
per previous discussion.
2002-04-18Rule names are now unique per-relation, rather than unique globally.Tom Lane
DROP RULE and COMMENT ON RULE syntax adds an 'ON tablename' clause, similar to TRIGGER syntaxes. To allow loading of existing pg_dump files containing COMMENT ON RULE, the COMMENT code will still accept the old syntax --- but only if the target rulename is unique across the whole database.
2002-04-17Opclasses live in namespaces. I also took the opportunity to createTom Lane
an 'opclass owner' column in pg_opclass. Nothing is done with it at present, but since there are plans to invent a CREATE OPERATOR CLASS command soon, we'll probably want DROP OPERATOR CLASS too, which suggests that a notion of ownership would be a good idea.