Skip to content
Snippets Groups Projects
  1. Apr 28, 2002
  2. Apr 17, 2002
    • Tom Lane's avatar
      Operators live in namespaces. CREATE/DROP/COMMENT ON OPERATOR take · 6cef5d25
      Tom Lane authored
      qualified operator names directly, for example CREATE OPERATOR myschema.+
      ( ... ).  To qualify an operator name in an expression you need to write
      OPERATOR(myschema.+) (thanks to Peter for suggesting an escape hatch).
      I also took advantage of having to reformat pg_operator to fix something
      that'd been bugging me for a while: mergejoinable operators should have
      explicit links to the associated cross-data-type comparison operators,
      rather than hardwiring an assumption that they are named < and >.
      6cef5d25
  3. Apr 11, 2002
    • Tom Lane's avatar
      Restructure representation of aggregate functions so that they have pg_proc · 902a6a0a
      Tom Lane authored
      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
  4. Apr 09, 2002
  5. Mar 29, 2002
  6. Mar 21, 2002
    • Tom Lane's avatar
      First phase of SCHEMA changes, concentrating on fixing the grammar and · 95ef6a34
      Tom Lane authored
      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
  7. Mar 20, 2002
  8. Mar 19, 2002
  9. Mar 12, 2002
    • Tom Lane's avatar
      Restructure representation of join alias variables. An explicit JOIN · 6eeb95f0
      Tom Lane authored
      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
  10. Mar 07, 2002
  11. Mar 06, 2002
    • Bruce Momjian's avatar
      Ok. Updated patch attached. · 01c76f74
      Bruce Momjian authored
      - domain.patch -> source patch against pgsql in cvs
      - drop_domain.sgml and create_domain.sgml -> New doc/src/sgml/ref docs
      
      - dominfo.txt -> basic domain related queries I used for testing
      [ ADDED TO /doc]
      
      Enables domains of array elements -> CREATE DOMAIN dom int4[3][2];
      
      Uses a typbasetype column to describe the origin of the domain.
      
      Copies data to attnotnull rather than processing in execMain().
      
      Some documentation differences from earlier.
      
      If this is approved, I'll start working on pg_dump, and a \dD <domain>
      option in psql, and regression tests.  I don't really feel like doing
      those until the system table structure settles for pg_type.
      
      
      CHECKS when added, will also be copied to to the table attributes.  FK
      Constraints (if I ever figure out how) will be done similarly.  Both
      will lbe handled by MergeDomainAttributes() which is called shortly
      before MergeAttributes().
      
      Rod Taylor
      01c76f74
  12. Nov 12, 2001
  13. Oct 25, 2001
  14. Oct 08, 2001
  15. Sep 28, 2001
    • Thomas G. Lockhart's avatar
      Measure the current transaction time to milliseconds. · 6f58115d
      Thomas G. Lockhart authored
      Define a new function, GetCurrentTransactionStartTimeUsec() to get the time
       to this precision.
      Allow now() and timestamp 'now' to use this higher precision result so
       we now have fractional seconds in this "constant".
      Add timestamp without time zone type.
      Move previous timestamp type to timestamp with time zone.
      Accept another ISO variant for date/time values: yyyy-mm-ddThh:mm:ss
       (note the "T" separating the day from hours information).
      Remove 'current' from date/time types; convert to 'now' in input.
      Separate time and timetz regression tests.
      Separate timestamp and timestamptz regression test.
      6f58115d
  16. Sep 21, 2001
  17. Sep 20, 2001
  18. Aug 09, 2001
  19. Jun 20, 2001
  20. Jun 05, 2001
  21. May 21, 2001
  22. May 19, 2001
    • Bruce Momjian's avatar
      New comment. This func/column things has always confused me. · 5ec84743
      Bruce Momjian authored
      /*
       *  parse function
       *  This code is confusing because the database can accept
       *  relation.column, column.function, or relation.column.function.
       *  In these cases, funcname is the last parameter, and fargs are
       *  the rest.
       *
       *  It can also be called as func(col) or func(col,col).
       *  In this case, Funcname is the part before parens, and fargs
       *  are the part in parens.
       *
       */
      Node *
      ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
                        bool agg_star, bool agg_distinct,
                        int precedence)
      5ec84743
    • Bruce Momjian's avatar
      2fd831d3
  23. May 18, 2001
  24. Mar 22, 2001
  25. Feb 16, 2001
    • Tom Lane's avatar
      Clean up two rather nasty bugs in operator selection code. · 13cc7eb3
      Tom Lane authored
      1. If there is exactly one pg_operator entry of the right name and oprkind,
      oper() and related routines would return that entry whether its input type
      had anything to do with the request or not.  This is just premature
      optimization: we shouldn't return the single candidate until after we verify
      that it really is a valid candidate, ie, is at least coercion-compatible
      with the given types.
      
      2. oper() and related routines only promise a coercion-compatible result.
      Unfortunately, there were quite a few callers that assumed the returned
      operator is binary-compatible with the given datatype; they would proceed
      to call it without making any datatype coercions.  These callers include
      sorting, grouping, aggregation, and VACUUM ANALYZE.  In general I think
      it is appropriate for these callers to require an exact or binary-compatible
      match, so I've added a new routine compatible_oper() that only succeeds if
      it can find an operator that doesn't require any run-time conversions.
      Callers now call oper() or compatible_oper() depending on whether they are
      prepared to deal with type conversion or not.
      
      The upshot of these bugs is revealed by the following silliness in PL/Tcl's
      selftest: it creates an operator @< on int4, and then tries to use it to
      sort a char(N) column.  The system would let it do that :-( (and evidently
      has done so since 6.3 :-( :-().  The result in this case was just a silly
      sort order, but the reverse combination would've provoked coredump from
      trying to dereference integers.  With this fix you get more reasonable
      behavior:
      pltcl_test=# select * from T_pkey1 order by key1, key2 using @<;
      ERROR:  Unable to identify an operator '@<' for types 'bpchar' and 'bpchar'
              You will have to retype this query using an explicit cast
      13cc7eb3
  26. Feb 14, 2001
    • Tom Lane's avatar
      Change scoping of table and join refnames to conform to SQL92: a JOIN · 4a66f9dd
      Tom Lane authored
      clause with an alias is a <subquery> and therefore hides table references
      appearing within it, according to the spec.  This is the same as the
      preliminary patch I posted to pgsql-patches yesterday, plus some really
      grotty code in ruleutils.c to reverse-list a query tree with the correct
      alias name depending on context.  I'd rather not have done that, but unless
      we want to force another initdb for 7.1, there's no other way for now.
      4a66f9dd
  27. Jan 24, 2001
  28. Nov 16, 2000
  29. Oct 07, 2000
    • Tom Lane's avatar
      Arrange that no database accesses are attempted during parser() --- this · fbd26d69
      Tom Lane authored
      took some rejiggering of typename and ACL parsing, as well as moving
      parse_analyze call out of parser().  Restructure postgres.c processing
      so that parse analysis and rewrite are skipped when in abort-transaction
      state.  Only COMMIT and ABORT statements will be processed beyond the raw
      parser() phase.  This addresses problem of parser failing with database access
      errors while in aborted state (see pghackers discussions around 7/28/00).
      Also fix some bugs with COMMIT/ABORT statements appearing in the middle of
      a single query input string.
      Function, operator, and aggregate arguments/results can now use full
      TypeName production, in particular foo[] for array types.
      DROP OPERATOR and COMMENT ON OPERATOR were broken for unary operators.
      Allow CREATE AGGREGATE to accept unquoted numeric constants for initcond.
      fbd26d69
  30. Oct 05, 2000
    • Tom Lane's avatar
      Reimplementation of UNION/INTERSECT/EXCEPT. INTERSECT/EXCEPT now meet the · 05e3d0ee
      Tom Lane authored
      SQL92 semantics, including support for ALL option.  All three can be used
      in subqueries and views.  DISTINCT and ORDER BY work now in views, too.
      This rewrite fixes many problems with cross-datatype UNIONs and INSERT/SELECT
      where the SELECT yields different datatypes than the INSERT needs.  I did
      that by making UNION subqueries and SELECT in INSERT be treated like
      subselects-in-FROM, thereby allowing an extra level of targetlist where the
      datatype conversions can be inserted safely.
      INITDB NEEDED!
      05e3d0ee
  31. Sep 29, 2000
    • Tom Lane's avatar
      Subselects in FROM clause, per ISO syntax: FROM (SELECT ...) [AS] alias. · 3a94e789
      Tom Lane authored
      (Don't forget that an alias is required.)  Views reimplemented as expanding
      to subselect-in-FROM.  Grouping, aggregates, DISTINCT in views actually
      work now (he says optimistically).  No UNION support in subselects/views
      yet, but I have some ideas about that.  Rule-related permissions checking
      moved out of rewriter and into executor.
      INITDB REQUIRED!
      3a94e789
  32. Sep 12, 2000
  33. Aug 08, 2000
    • Tom Lane's avatar
      Remove 'func_tlist' from Func expression nodes, likewise 'param_tlist' · 62e29fe2
      Tom Lane authored
      from Param nodes, per discussion a few days ago on pghackers.  Add new
      expression node type FieldSelect that implements the functionality where
      it's actually needed.  Clean up some other unused fields in Func nodes
      as well.
      NOTE: initdb forced due to change in stored expression trees for rules.
      62e29fe2
  34. Jun 15, 2000
  35. Jun 05, 2000
  36. May 30, 2000
  37. May 29, 2000
  38. May 26, 2000
    • Tom Lane's avatar
      Modify raw parsetree representation returned by gram.y for SubLinks: · ff566b22
      Tom Lane authored
      the oper field should be a valid Node structure so it can be dumped by
      outfuncs.c without risk of coredump.  (We had been using a raw pointer
      to character string, which surely is NOT a valid Node.)  This doesn't
      cause any backwards compatibility problems for stored rules, since
      raw unanalyzed parsetrees are never stored.
      ff566b22
Loading