summaryrefslogtreecommitdiff
path: root/src/backend/parser
AgeCommit message (Collapse)Author
2006-03-05Per recent discussion on -hackers, we should sometimes reorder theNeil Conway
columns of the grouping clause to avoid redundant sorts. The optimizer is not currently capable of doing this, so this patch implements a simple hack in the analysis phase (transformGroupClause): if any subset of the GROUP BY clause matches a prefix of the ORDER BY list, that prefix is moved to the front of the GROUP BY clause. This shouldn't change the semantics of the query, and allows a redundant sort to be avoided for queries like "GROUP BY a, b ORDER BY b".
2006-03-05Update copyright for 2006. Update scripts.Bruce Momjian
2006-03-03Add CASCADE option to TRUNCATE. Joachim WielandTom Lane
2006-02-28Allow the syntax CREATE TYPE foo, with no parameters, to permit explicitTom Lane
creation of a shell type. This allows a less hacky way of dealing with the mutual dependency between a datatype and its I/O functions: make a shell type, then make the functions, then define the datatype fully. We should fix pg_dump to handle things this way, but this commit just deals with the backend. Martijn van Oosterhout, with some corrections by Tom Lane.
2006-02-19Add TABLESPACE and ON COMMIT clauses to CREATE TABLE AS. ON COMMIT isNeil Conway
required by the SQL standard, and TABLESPACE is useful functionality. Patch from Kris Jurka, minor editorialization by Neil Conway.
2006-02-18Mark unescape_single_char() "static": as far as I can see this functionNeil Conway
is only used by scan.l/scan.c
2006-02-12Revert patch becaues of locking concerns:Bruce Momjian
Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME Joachim Wieland
2006-02-12I've created a new shared catalog table pg_shdescription to storeBruce Momjian
comments on cluster global objects like databases, tablespaces, and roles. It touches a lot of places, but not much in the way of big changes. The only design decision I made was to duplicate the query and manipulation functions rather than to try and have them handle both shared and local comments. I believe this is simpler for the code and not an issue for callers because they know what type of object they are dealing with. This has resulted in a shobj_description function analagous to obj_description and backend functions [Create/Delete]SharedComments mirroring the existing [Create/Delete]Comments functions. pg_shdescription.h goes into src/include/catalog/ Kris Jurka
2006-02-11Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAMEBruce Momjian
Joachim Wieland
2006-02-04DROP IF EXISTS for ROLE/USER/GROUPAndrew Dunstan
2006-01-31Allow %TYPE to be used with SETOF, per gripe from Murat Tasan.Tom Lane
2006-01-22Fix alias-for-target-table-of-UPDATE-or-DELETE patch so that alias canTom Lane
be any ColId other than 'SET', rather than only IDENT as originally. Per discussion.
2006-01-22Allow an optional alias for the target table to be specified for UPDATENeil Conway
and DELETE. If specified, the alias must be used instead of the full table name. Also, the alias currently cannot be used in the SET clause of UPDATE. Patch from Atsushi Ogawa, various editorialization by Neil Conway. Along the way, make the rowtypes regression test pass if add_missing_from is enabled, and add a new (skeletal) regression test for DELETE.
2006-01-21Add GRANT ON SEQUENCE syntax to support sequence-only permissions.Bruce Momjian
Continue to support GRANT ON [TABLE] for sequences for backward compatibility; issue warning for invalid sequence permissions. [Backward compatibility warning message.] Add USAGE permission for sequences that allows only currval() and nextval(), not setval(). Mention object name in grant/revoke warnings because of possible multi-object operations.
2006-01-15Allow the types of parameters to PREPARE to be inferred. If a parameter'sNeil Conway
data type is unspecified or is declared to be "unknown", the type will be inferred from the context in which the parameter is used. This was already possible for protocol-level prepared statements.
2006-01-12We neglected to apply domain constraints on UNKNOWN parameters toNeil Conway
prepared statements, per report from David Wheeler.
2006-01-10Improve error messages for missing-FROM-entry cases, as per recent discussion.Tom Lane
2005-12-29Revert some careless search-and-replace: "ADD" in comment text shouldNeil Conway
not be replaced with "ADD_P".
2005-12-28Implement SQL-compliant treatment of row comparisons for < <= > >= casesTom Lane
(previously we only did = and <> correctly). Also, allow row comparisons with any operators that are in btree opclasses, not only those with these specific names. This gets rid of a whole lot of indefensible assumptions about the behavior of particular operators based on their names ... though it's still true that IN and NOT IN expand to "= ANY". The patch adds a RowCompareExpr expression node type, and makes some changes in the representation of ANY/ALL/ROWCOMPARE SubLinks so that they can share code with RowCompareExpr. I have not yet done anything about making RowCompareExpr an indexable operator, but will look at that soon. initdb forced due to changes in stored rules.
2005-12-27Protect ADD and HEADER symbols from conflicting with MIPS includes.Bruce Momjian
2005-12-25I have added these macros to c.h:Bruce Momjian
#define HIGHBIT (0x80) #define IS_HIGHBIT_SET(ch) ((unsigned char)(ch) & HIGHBIT) and removed CSIGNBIT and mapped it uses to HIGHBIT. I have also added uses for IS_HIGHBIT_SET where appropriate. This change is purely for code clarity.
2005-12-23Allow CREATE/ALTER ROLE PASSWORD NULL to allow restoring the default statePeter Eisentraut
of having no password.
2005-12-11Implement IS NOT DISTINCT FROM, update the regression tests and docs.Neil Conway
Patch from Pavel Stehule, minor fixups by myself.
2005-11-28Change the parser to translate "foo [NOT] IN (expression-list)" toTom Lane
ScalarArrayOpExpr when possible, that is, whenever there is an array type for the values of the expression list. This completes the project I've been working on to improve the speed of index searches with long IN lists, as per discussion back in mid-October. I did not force initdb, but until you do one you will see failures in the "rules" regression test, because some of the standard system views use IN and their compiled formats have changed.
2005-11-22Re-run pgindent, fixing a problem where comment lines after a blankBruce Momjian
comment line where output as too long, and update typedefs for /lib directory. Also fix case where identifiers were used as variable names in the backend, but as typedefs in ecpg (favor the backend for indenting). Backpatch to 8.1.X.
2005-11-22 DROP DATABASE IF EXISTS variantAndrew Dunstan
2005-11-21Implement DROP OWNED and REASSIGN OWNED. These new commands facilitate theAlvaro Herrera
process of dropping roles by dropping objects owned by them and privileges granted to them, or giving the owned objects to someone else, through the use of the data stored in the new pg_shdepend catalog. Some refactoring of the GRANT/REVOKE code was needed, as well as ALTER OWNER code. Further cleanup of code duplication in the GRANT code seems necessary. Implemented by me after an idea from Tom Lane, who also provided various kind of implementation advice. Regression tests pass. Some tests for the new functionality are also added, as well as rudimentary documentation.
2005-11-19DROP objecttype IF EXISTS for the following objects:Andrew Dunstan
table view index sequence schema type domain conversion
2005-11-18Fix performance issue in exprTypmod(): for a COALESCE expression, itTom Lane
recursed twice on its first argument, leading to exponential time spent on a deep nest of COALESCEs ... such as a deeply nested FULL JOIN would produce. Per report from Matt Carter.
2005-11-13Force the second argument of SUBSTRING(foo FOR bar) to be int4, to avoidTom Lane
surprising results when it's some other numeric type. This doesn't solve the generic problem of surprising implicit casts to text, but it's a low-impact way of making sure this particular case behaves sanely. Per gripe from Harald Fuchs and subsequent discussion.
2005-10-26Adjust parser so that POSTQUEL-style implicit RTEs are stored withTom Lane
inFromCl true, meaning that they will list out as explicit RTEs if they are in a view or rule. Update comments about inFromCl to reflect the way it's now actually used. Per recent discussion.
2005-10-15Standard pgindent run for 8.1.Bruce Momjian
2005-10-06When a function not returning RECORD has a single OUT parameter, useTom Lane
the parameter's name (if any) as the default column name for SELECT FROM the function, rather than the function name as previously. I still think this is a bad idea, but I lost the argument. Force decompilation of function RTEs to specify full aliases always, to reduce the odds of this decision breaking dumped views.
2005-10-02Change nextval and other sequence functions to specify their sequenceTom Lane
argument as a 'regclass' value instead of a text string. The frontend conversion of text string to pg_class OID is now encapsulated as an implicitly-invocable coercion from text to regclass. This provides backwards compatibility to the old behavior when the sequence argument is explicitly typed as 'text'. When the argument is just an unadorned literal string, it will be taken as 'regclass', which means that the stored representation will be an OID. This solves longstanding problems with renaming sequences that are referenced in default expressions, as well as new-in-8.1 problems with renaming such sequences' schemas or moving them to another schema. All per recent discussion. Along the way, fix some rather serious problems in dbmirror's support for mirroring sequence operations (int4 vs int8 confusion for instance).
2005-09-23Add comments explaining clauses used by CREATE ROLE but not ALTER.Bruce Momjian
2005-09-05Implement a preliminary 'template' facility for procedural languages,Tom Lane
as per my recent proposal. For now the template data is hard-wired in proclang.c --- this should be replaced later by a new shared system catalog, but we don't want to force initdb during 8.1 beta. This change lets us cleanly load existing dump files even if they contain outright wrong information about a PL's support functions, such as a wrong path to the shared library or a missing validator function. Also, we can revert the recent kluges to make pg_dump dump PL support functions that are stored in pg_catalog. While at it, I removed the code in pg_regress that replaced $libdir with a hardcoded path for temporary installations. This is no longer needed given our support for relocatable installations.
2005-08-24Fix SHOW and RESET grammar to accept custom variable names.Tom Lane
2005-08-23Add ALTER TABLE ENABLE/DISABLE TRIGGER commands. Change pg_dump toTom Lane
use these instead of its previous hack of changing pg_class.reltriggers. Documentation is lacking, will add that later. Patch by Satoshi Nagayasu, review and some extra work by Tom Lane.
2005-08-16Reject operator names >= NAMEDATALEN characters. These will not workTom Lane
anyway, and in assert-enabled builds you are likely to get an assertion failure. Backpatch as far as 7.3; 7.2 seems not to have the problem.
2005-08-01Add NOWAIT option to SELECT FOR UPDATE/SHARE.Tom Lane
Original patch by Hans-Juergen Schoenig, revisions by Karel Zak and Tom Lane.
2005-08-01Add ALTER object SET SCHEMA capability for a limited but useful set ofTom Lane
object kinds (tables, functions, types). Documentation is not here yet. Original code by Bernd Helmle, extensive rework by Bruce Momjian and Tom Lane.
2005-07-31Add per-user and per-database connection limit options.Tom Lane
This patch also includes preliminary update of pg_dumpall for roles. Petr Jelinek, with review by Bruce Momjian and Tom Lane.
2005-07-28Make use of new list primitives list_append_unique and list_concat_uniqueTom Lane
where applicable.
2005-07-26Minor correction: cause ALTER ROLE role ROLE rolenames to behaveTom Lane
sensibly, even though we don't document it.
2005-07-26Add a role property 'rolinherit' which, when false, denotes that the roleTom Lane
doesn't automatically inherit the privileges of roles it is a member of; for such a role, membership in another role can be exploited only by doing explicit SET ROLE. The default inherit setting is TRUE, so by default the behavior doesn't change, but creating a user with NOINHERIT gives closer adherence to our current reading of SQL99. Documentation still lacking, and I think the information schema needs another look.
2005-07-25Add SET ROLE. This is a partial commit of Stephen Frost's recent patch;Tom Lane
I'm still working on the has_role function and information_schema changes.
2005-06-29More cleanup on roles patch. Allow admin option to be inherited throughTom Lane
role memberships; make superuser/createrole distinction do something useful; fix some locking and CommandCounterIncrement issues; prevent creation of loops in the membership graph.
2005-06-28Bring syntax of role-related commands into SQL compliance. To avoidTom Lane
syntactic conflicts, both privilege and role GRANT/REVOKE commands have to use the same production for scanning the list of tokens that might eventually turn out to be privileges or role names. So, change the existing GRANT/REVOKE code to expect a list of strings not pre-reduced AclMode values. Fix a couple other minor issues while at it, such as InitializeAcl function name conflicting with a Windows system function.
2005-06-28Replace pg_shadow and pg_group by new role-capable catalogs pg_authidTom Lane
and pg_auth_members. There are still many loose ends to finish in this patch (no documentation, no regression tests, no pg_dump support for instance). But I'm going to commit it now anyway so that Alvaro can make some progress on shared dependencies. The catalog changes should be pretty much done.
2005-06-26Add Oracle-compatible GREATEST and LEAST functions. Pavel StehuleTom Lane