1. 26 2月, 2003 1 次提交
  2. 14 2月, 2003 1 次提交
  3. 09 2月, 2003 1 次提交
  4. 21 1月, 2003 1 次提交
    • T
      IN clauses appearing at top level of WHERE can now be handled as joins. · bdfbfde1
      Tom Lane 提交于
      There are two implementation techniques: the executor understands a new
      JOIN_IN jointype, which emits at most one matching row per left-hand row,
      or the result of the IN's sub-select can be fed through a DISTINCT filter
      and then joined as an ordinary relation.
      Along the way, some minor code cleanup in the optimizer; notably, break
      out most of the jointree-rearrangement preprocessing in planner.c and
      put it in a new file prep/prepjointree.c.
      bdfbfde1
  5. 17 1月, 2003 1 次提交
  6. 17 12月, 2002 1 次提交
  7. 12 12月, 2002 1 次提交
    • T
      Phase 2 of read-only-plans project: restructure expression-tree nodes · a0bf885f
      Tom Lane 提交于
      so that all executable expression nodes inherit from a common supertype
      Expr.  This is somewhat of an exercise in code purity rather than any
      real functional advance, but getting rid of the extra Oper or Func node
      formerly used in each operator or function call should provide at least
      a little space and speed improvement.
      initdb forced by changes in stored-rules representation.
      a0bf885f
  8. 05 12月, 2002 1 次提交
  9. 20 10月, 2002 2 次提交
    • T
      Rule rewriter was doing the wrong thing with conditional INSTEAD rules · a044e2ab
      Tom Lane 提交于
      whose conditions might yield NULL.  The negated qual to attach to the
      original query is properly 'x IS NOT TRUE', not 'NOT x'.  This fix
      produces correct behavior, but we may be taking a performance hit because
      the planner is much stupider about IS NOT TRUE than it is about NOT
      clauses.  Future TODO: teach prepqual, other parts of planner how to
      cope with BooleanTest clauses more effectively.
      a044e2ab
    • T
      Fix rewrite code so that rules are in fact executed in order by name, · c1f91a38
      Tom Lane 提交于
      rather than being reordered according to INSTEAD attribute for
      implementation convenience.
      Also, increase compiled-in recursion depth limit from 10 to 100 rewrite
      cycles.  10 seems pretty marginal for situations where multiple rules
      exist for the same query.  There was a complaint about this recently,
      so I'm going to bump it up.  (Perhaps we should make the limit a GUC
      parameter, but that's too close to being a new feature to do in beta.)
      c1f91a38
  10. 15 10月, 2002 1 次提交
  11. 19 9月, 2002 1 次提交
    • T
      Extend pg_cast castimplicit column to a three-way value; this allows us · b26dfb95
      Tom Lane 提交于
      to be flexible about assignment casts without introducing ambiguity in
      operator/function resolution.  Introduce a well-defined promotion hierarchy
      for numeric datatypes (int2->int4->int8->numeric->float4->float8).
      Change make_const to initially label numeric literals as int4, int8, or
      numeric (never float8 anymore).
      Explicitly mark Func and RelabelType nodes to indicate whether they came
      from a function call, explicit cast, or implicit cast; use this to do
      reverse-listing more accurately and without so many heuristics.
      Explicit casts to char, varchar, bit, varbit will truncate or pad without
      raising an error (the pre-7.2 behavior), while assigning to a column without
      any explicit cast will still raise an error for wrong-length data like 7.3.
      This more nearly follows the SQL spec than 7.2 behavior (we should be
      reporting a 'completion condition' in the explicit-cast cases, but we have
      no mechanism for that, so just do silent truncation).
      Fix some problems with enforcement of typmod for array elements;
      it didn't work at all in 'UPDATE ... SET array[n] = foo', for example.
      Provide a generalized array_length_coerce() function to replace the
      specialized per-array-type functions that used to be needed (and were
      missing for NUMERIC as well as all the datetime types).
      Add missing conversions int8<->float4, text<->numeric, oid<->int8.
      initdb forced.
      b26dfb95
  12. 11 9月, 2002 1 次提交
    • T
      Tweak querytree-dependency-extraction code so that columns of tables · 6fdc44be
      Tom Lane 提交于
      that are explicitly JOINed are not considered dependencies unless they
      are actually used in the query: mere presence in the joinaliasvars
      list of a JOIN RTE doesn't count as being used.  The patch touches
      a number of files because I needed to generalize the API of
      query_tree_walker to support an additional flag bit, but the changes
      are otherwise quite small.
      6fdc44be
  13. 05 9月, 2002 1 次提交
  14. 02 9月, 2002 1 次提交
  15. 29 8月, 2002 1 次提交
  16. 27 8月, 2002 1 次提交
    • T
      Modify array operations to include array's element type OID in the · 5cabcfcc
      Tom Lane 提交于
      array header, and to compute sizing and alignment of array elements
      the same way normal tuple access operations do --- viz, using the
      tupmacs.h macros att_addlength and att_align.  This makes the world
      safe for arrays of cstrings or intervals, and should make it much
      easier to write array-type-polymorphic functions; as examples see
      the cleanups of array_out and contrib/array_iterator.  By Joe Conway
      and Tom Lane.
      5cabcfcc
  17. 05 8月, 2002 1 次提交
    • T
      Restructure system-catalog index updating logic. Instead of having · 15fe086f
      Tom Lane 提交于
      hardwired lists of index names for each catalog, use the relcache's
      mechanism for caching lists of OIDs of indexes of any table.  This
      reduces the common case of updating system catalog indexes to a single
      line, makes it much easier to add a new system index (in fact, you
      can now do so on-the-fly if you want to), and as a nice side benefit
      improves performance a little.  Per recent pghackers discussion.
      15fe086f
  18. 03 8月, 2002 1 次提交
    • T
      ALTER TABLE DROP COLUMN works. Patch by Christopher Kings-Lynne, · 38bb77a5
      Tom Lane 提交于
      code review by Tom Lane.  Remaining issues: functions that take or
      return tuple types are likely to break if one drops (or adds!)
      a column in the table defining the type.  Need to think about what
      to do here.
      
      Along the way: some code review for recent COPY changes; mark system
      columns attnotnull = true where appropriate, per discussion a month ago.
      38bb77a5
  19. 20 7月, 2002 1 次提交
    • B
      oid is needed, it is added at the end of the struct (after the null · b0f5086e
      Bruce Momjian 提交于
      bitmap, if present).
      
      Per Tom Lane's suggestion the information whether a tuple has an oid
      or not is carried in the tuple descriptor.  For debugging reasons
      tdhasoid is of type char, not bool.  There are predefined values for
      WITHOID, WITHOUTOID and UNDEFOID.
      
      This patch has been generated against a cvs snapshot from last week
      and I don't expect it to apply cleanly to current sources.  While I
      post it here for public review, I'm working on a new version against a
      current snapshot.  (There's been heavy activity recently; hope to
      catch up some day ...)
      
      This is a long patch;  if it is too hard to swallow, I can provide it
      in smaller pieces:
      
      Part 1:  Accessor macros
      Part 2:  tdhasoid in TupDesc
      Part 3:  Regression test
      Part 4:  Parameter withoid to heap_addheader
      Part 5:  Eliminate t_oid from HeapTupleHeader
      
      Part 2 is the most hairy part because of changes in the executor and
      even in the parser;  the other parts are straightforward.
      
      Up to part 4 the patched postmaster stays binary compatible to
      databases created with an unpatched version.  Part 5 is small (100
      lines) and finally breaks compatibility.
      
      Manfred Koizar
      b0f5086e
  20. 18 7月, 2002 1 次提交
    • B
      The attached patch (against HEAD) implements · a90db34b
      Bruce Momjian 提交于
        COPY x (a,d,c,b) from stdin;
        COPY x (a,c) to stdout;
      
      as well as the corresponding changes to pg_dump to use the new
      functionality.  This functionality is not available when using
      the BINARY option.  If a column is not specified in the COPY FROM
      statement, its default values will be used.
      
      In addition to this functionality, I tweaked a couple of the
      error messages emitted by the new COPY <options> checks.
      
      Brent Verner
      a90db34b
  21. 16 7月, 2002 1 次提交
    • T
      Add code to extract dependencies from an expression tree, and use it · 30ec3160
      Tom Lane 提交于
      to build dependencies for rules, constraint expressions, and default
      expressions.  Repair some problems in the original design of
      recursiveDeletion() exposed by more complex dependency sets.  Fix
      regression tests that were deleting things in illegal sequences.
      30ec3160
  22. 13 7月, 2002 1 次提交
    • T
      Second phase of committing Rod Taylor's pg_depend/pg_constraint patch. · 7c6df91d
      Tom Lane 提交于
      pg_relcheck is gone; CHECK, UNIQUE, PRIMARY KEY, and FOREIGN KEY
      constraints all have real live entries in pg_constraint.  pg_depend
      exists, and RESTRICT/CASCADE options work on most kinds of DROP;
      however, pg_depend is not yet very well populated with dependencies.
      (Most of the ones that are present at this point just replace formerly
      hardwired associations, such as the implicit drop of a relation's pg_type
      entry when the relation is dropped.)  Need to add more logic to create
      dependency entries, improve pg_dump to dump constraints in place of
      indexes and triggers, and add some regression tests.
      7c6df91d
  23. 21 6月, 2002 1 次提交
  24. 22 5月, 2002 1 次提交
    • T
      Remove global variable scanCommandId in favor of storing a command ID · 959e61e9
      Tom Lane 提交于
      in snapshots, per my proposal of a few days ago.  Also, tweak heapam.c
      routines (heap_insert, heap_update, heap_delete, heap_mark4update) to
      be passed the command ID to use, instead of doing GetCurrentCommandID.
      For catalog updates they'll still get passed current command ID, but
      for updates generated from the main executor they'll get passed the
      command ID saved in the snapshot the query is using.  This should fix
      some corner cases associated with functions and triggers that advance
      current command ID while an outer query is still in progress.
      959e61e9
  25. 21 5月, 2002 1 次提交
    • T
      Restructure indexscan API (index_beginscan, index_getnext) per · 44fbe20d
      Tom 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.
      44fbe20d
  26. 13 5月, 2002 1 次提交
  27. 27 4月, 2002 1 次提交
  28. 20 4月, 2002 1 次提交
  29. 19 4月, 2002 1 次提交
    • T
      Rule names are now unique per-relation, rather than unique globally. · b3120804
      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.
      b3120804
  30. 12 4月, 2002 1 次提交
    • T
      Restructure representation of aggregate functions so that they have pg_proc · 902a6a0a
      Tom Lane 提交于
      entries, per pghackers discussion.  This fixes aggregates to live in
      namespaces, and also simplifies/speeds up lookup in parse_func.c.
      Also, add a 'proimplicit' flag to pg_proc that controls whether a type
      coercion function may be invoked implicitly, or only explicitly.  The
      current settings of these flags are more permissive than I would like,
      but we will need to debate and refine the behavior; for now, I avoided
      breaking regression tests as much as I could.
      902a6a0a
  31. 05 4月, 2002 1 次提交
    • T
      Undo not-so-hot decision to postpone insertion of default values into · b9ae55f2
      Tom Lane 提交于
      INSERT statements to the planner.  Taking it out of the parser was right
      (so that defaults don't get into stored rules), but it has to happen
      before rewrite rule expansion, else references to NEW.field behave
      incorrectly.  Accordingly, add a step to the rewriter to insert defaults
      just before rewrite-rule expansion.
      b9ae55f2
  32. 30 3月, 2002 1 次提交
  33. 27 3月, 2002 1 次提交
  34. 22 3月, 2002 3 次提交
    • T
      A little further progress on schemas: push down RangeVars into · 108a0ec8
      Tom Lane 提交于
      addRangeTableEntry calls.  Remove relname field from RTEs, since
      it will no longer be a useful unique identifier of relations;
      we want to encourage people to rely on the relation OID instead.
      Further work on dumping qual expressions in EXPLAIN, too.
      108a0ec8
    • T
      Change the aclchk.c routines to uniformly use OIDs to identify the · 56c9b73c
      Tom Lane 提交于
      objects to be privilege-checked.  Some change in their APIs would be
      necessary no matter what in the schema environment, and simply getting
      rid of the name-based interface entirely seems like the best way.
      56c9b73c
    • T
      First phase of SCHEMA changes, concentrating on fixing the grammar and · 95ef6a34
      Tom Lane 提交于
      the parsetree representation.  As yet we don't *do* anything with schema
      names, just drop 'em on the floor; but you can enter schema-compatible
      command syntax, and there's even a primitive CREATE SCHEMA command.
      No doc updates yet, except to note that you can now extract a field
      from a function-returning-row's result with (foo(...)).fieldname.
      95ef6a34
  35. 12 3月, 2002 1 次提交
    • T
      Restructure representation of join alias variables. An explicit JOIN · 6eeb95f0
      Tom Lane 提交于
      now has an RTE of its own, and references to its outputs now are Vars
      referencing the JOIN RTE, rather than CASE-expressions.  This allows
      reverse-listing in ruleutils.c to use the correct alias easily, rather
      than painfully reverse-engineering the alias namespace as it used to do.
      Also, nested FULL JOINs work correctly, because the result of the inner
      joins are simple Vars that the planner can cope with.  This fixes a bug
      reported a couple times now, notably by Tatsuo on 18-Nov-01.  The alias
      Vars are expanded into COALESCE expressions where needed at the very end
      of planning, rather than during parsing.
      Also, beginnings of support for showing plan qualifier expressions in
      EXPLAIN.  There are probably still cases that need work.
      initdb forced due to change of stored-rule representation.
      6eeb95f0
  36. 06 11月, 2001 1 次提交
  37. 28 10月, 2001 1 次提交