1. 25 Jul, 2007 1 commit
  2. 25 Jul, 2006 1 commit
    • Tom Lane's avatar
      Remove hard-wired lists of timezone abbreviations in favor of providing · d8b5c95c
      Tom Lane authored
      configuration files that can be altered by a DBA.  The australian_timezones
      GUC setting disappears, replaced by a timezone_abbreviations setting (set this
      to 'Australia' to get the effect of australian_timezones).  The list of zone
      names defined by default has undergone a bit of cleanup, too.  Documentation
      still needs some work --- in particular, should we fix Table B-4, or just get
      rid of it?  Joachim Wieland, with some editorializing by moi.
      d8b5c95c
  3. 02 Apr, 2006 1 commit
  4. 30 Jul, 2005 1 commit
  5. 07 Apr, 2005 1 commit
    • Neil Conway's avatar
      Add a "USING" clause to DELETE, which is equivalent to the FROM clause · f5ab0a14
      Neil Conway authored
      in UPDATE. We also now issue a NOTICE if a query has _any_ implicit
      range table entries -- in the past, we would only warn about implicit
      RTEs in SELECTs with at least one explicit RTE.
      
      As a result of the warning change, 25 of the regression tests had to
      be updated. I also took the opportunity to remove some bogus whitespace
      differences between some of the float4 and float8 variants. I believe
      I have correctly updated all the platform-specific variants, but let
      me know if that's not the case.
      
      Original patch for DELETE ... USING from Euler Taveira de Oliveira,
      reworked by Neil Conway.
      f5ab0a14
  6. 02 Jul, 2004 1 commit
    • Tom Lane's avatar
      Add missing operators of the form interval-plus-datetime, as required for · e34082ee
      Tom Lane authored
      better SQL compliance in this area, per recent discussion.  Mark related
      operators as commutators where possible.  (The system doesn't actually care
      about commutator marking for operators not returning boolean, at the moment,
      but this seems forward-thinking and besides it made it easier to verify
      that we hadn't missed any.)
      Also, remove interval-minus-time and interval-minus-timetz operators.
      I'm not sure how these got in, but they are nonstandard and had very
      obviously broken behavior.  (minus is not commutative in anyone's book.)
      I doubt anyone had ever used 'em, because we'd surely have gotten a bug
      report about it if so.
      e34082ee
  7. 29 Jul, 2003 1 commit
    • Tom Lane's avatar
      Apply (a somewhat revised version of) Greg Mullane's patch to eliminate · 9c2a7c22
      Tom Lane authored
      heuristic determination of day vs month in date/time input.  Add the
      ability to specify that input is interpreted as yy-mm-dd order (which
      formerly worked, but only for yy greater than 31).  DateStyle's input
      component now has the preferred spellings DMY, MDY, or YMD; the older
      keywords European and US are now aliases for the first two of these.
      Per recent discussions on pgsql-general.
      9c2a7c22
  8. 20 Mar, 2003 1 commit
    • Bruce Momjian's avatar
      Attached is a patch that limits the range tested by horology to · d7f10705
      Bruce Momjian authored
      what is capable using integer-datatime timestamps. It does attempt
      to exercise the maximum allowable timestamp range.
      Also is a small error check when converting a timestamp from external
      to internal format that prevents out of range timestamps from being
      entered.
      
      Files patched:
              Index: src/backend/utils/adt/timestamp.c
                      Added range check to prevent out of range timestamps
                      from being used.
      
              Index: src/test/regress/sql/horology.sql
              Index: src/test/regress/expected/horology-no-DST-before-1970.out
              Index: src/test/regress/expected/horology-solaris-1947.out
                      Limited range of timestamps being checked to
                      Jan 1, 4713 BC  to Dec 31, 294276
      
      In creating this patch, I have seen some definite problems with integer
      timestamps and how they react when used near their limits. For example,
      the following statement gives the correct result:
      
              SELECT timestamp without time zone 'Jan 1, 4713 BC'
                     + interval '109203489 days' AS "Dec 31, 294276";
      
      However, this statement which is the logical inverse of the above
      gives incorrect results:
      
              SELECT timestamp without time zone '12/31/294276'
                   - timestamp without time zone 'Jan 1, 4713 BC' AS "109203489 Days";
      
      John Cochran
      d7f10705
  9. 19 Feb, 2003 1 commit
    • Bruce Momjian's avatar
      The following patches eliminate the overflows in the j2date() and date2j() · a286f732
      Bruce Momjian authored
      functions which limited the maximum date for a timestamp to AD 1465001.
      The new limit is AD 5874897.
      The files affected are:
      
      doc/src/sgml/datatype.sgml:
          Documentation change due to patch. Included is a notice about
          the reduced range when using an eight-byte integer for timestamps.
      
      src/backend/utils/adt/datetime.c:
          Replacement functions for j2date() and date2j() functions.
      
      src/include/utils/datetime.h:
          Corrected a bug with the limit on the earliest possible date,
          Nov 23,-4713 has a Julian day count of -1. The earliest possible
          date should be Nov 24, -4713 with a day count of 0.
      
      src/test/regress/expected/horology-no-DST-before-1970.out:
      src/test/regress/expected/horology-solaris-1947.out:
      src/test/regress/expected/horology.out:
          Copies of expected output for regression testing.
          Note: Only horology.out has been physically tested. I do not have access
          to a Solaris box and I don't know how to provoke the "pre-1970" test.
      
      src/test/regress/sql/horology.sql:
          Added some test cases to check extended range.
      
      John Cochran
      a286f732
  10. 31 Jan, 2003 1 commit
  11. 18 Sep, 2002 1 commit
    • Tom Lane's avatar
      Extend pg_cast castimplicit column to a three-way value; this allows us · b26dfb95
      Tom Lane authored
      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. 21 Apr, 2002 1 commit
    • Thomas G. Lockhart's avatar
      Support alternate storage scheme of 64-bit integer for date/time types. · 547df0cc
      Thomas G. Lockhart authored
       Use "--enable-integer-datetimes" in configuration to use this rather
       than the original float8 storage. I would recommend the integer-based
       storage for any platform on which it is available. We perhaps should
       make this the default for the production release.
      Change timezone(timestamptz) results to return timestamp rather than
       a character string. Formerly, we didn't have a way to represent
       timestamps with an explicit time zone other than freezing the info into
       a string. Now, we can reasonably omit the explicit time zone from the
       result and return a timestamp with values appropriate for the specified
       time zone. Much cleaner, and if you need the time zone in the result
       you can put it into a character string pretty easily anyway.
      Allow fractional seconds in date/time types even for dates prior to 1BC.
      Limit timestamp data types to 6 decimal places of precision. Just right
       for a micro-second storage of int8 date/time types, and reduces the
       number of places ad-hoc rounding was occuring for the float8-based types.
      Use lookup tables for precision/rounding calculations for timestamp and
       interval types.  Formerly used pow() to calculate the desired value but
       with a more limited range there is no reason to not type in a lookup
       table. Should be *much* better performance, though formerly there were
       some optimizations to help minimize the number of times pow() was called.
      Define a HAVE_INT64_TIMESTAMP variable. Based on the configure option
       "--enable-integer-datetimes" and the existing internal INT64_IS_BUSTED.
      Add explicit date/interval operators and functions for addition and
       subtraction. Formerly relied on implicit type promotion from date to
       timestamp with time zone.
      Change timezone conversion functions for the timetz type from "timetz()"
       to "timezone()". This is consistant with other time zone coersion
       functions for other types.
      Bump the catalog version to 200204201.
      Fix up regression tests to reflect changes in fractional seconds
       representation for date/times in BC eras.
      All regression tests pass on my Linux box.
      547df0cc
  13. 12 Jan, 2002 1 commit
    • Thomas G. Lockhart's avatar
      Repair bugs in declarations of routines to add timestamptz and interval. · 192061e4
      Thomas G. Lockhart authored
       Thanks to Bruce for spotting it and Tom Lane for diagnosing it.
      Since horology test output is changing anyway, add some date/time input
       tests to horology.sql. Some of these should move to the tests for the
       individual data types, and we perhaps should add an entire new test
       for "timezone" to allow manipulating the current time zone without
       risking damage to the results of other tests.
      192061e4
  14. 21 Nov, 2001 1 commit
  15. 06 Nov, 2001 1 commit
  16. 18 Oct, 2001 1 commit
    • Thomas G. Lockhart's avatar
      Accept an INTERVAL argument for SET TIME ZONE per SQL99. · 9310075a
      Thomas G. Lockhart authored
       Modified the parser and the SET handlers to use full Node structures
       rather than simply a character string argument.
      Implement INTERVAL() YEAR TO MONTH (etc) syntax per SQL99.
       Does not yet accept the goofy string format that goes along with, but
       this should be fairly straight forward to fix now as a bug or later
       as a feature.
      Implement precision for the INTERVAL() type.
       Use the typmod mechanism for both of INTERVAL features.
      Fix the INTERVAL syntax in the parser:
       opt_interval was in the wrong place.
      INTERVAL is now a reserved word, otherwise we get reduce/reduce errors.
      Implement an explicit date_part() function for TIMETZ.
       Should fix coersion problem with INTERVAL reported by Peter E.
      Fix up some error messages for date/time types.
       Use all caps for type names within message.
      Fix recently introduced side-effect bug disabling 'epoch' as a recognized
       field for date_part() etc. Reported by Peter E. (??)
      Bump catalog version number.
      Rename "microseconds" current transaction time field
       from ...Msec to ...Usec. Duh!
      date/time regression tests updated for reference platform, but a few
       changes will be necessary for others.
      9310075a
  17. 03 Oct, 2001 1 commit
    • Thomas G. Lockhart's avatar
      Implement precision support for timestamp and time, both with and without · 3e1beda2
      Thomas G. Lockhart authored
       time zones.
      SQL99 spec requires a default of zero (round to seconds) which is set
       in gram.y as typmod is set in the parse tree. We *could* change to a
       default of either 6 (for internal compatibility with previous versions)
       or 2 (for external compatibility with previous versions).
      Evaluate entries in pg_proc wrt the iscachable attribute for timestamp and
       other date/time types. Try to recognize cases where side effects like the
       current time zone setting may have an effect on results to decide whether
       something is cachable or not.
      3e1beda2
  18. 29 Sep, 2001 1 commit
  19. 28 Sep, 2001 1 commit
  20. 18 Jun, 2001 1 commit
  21. 06 Apr, 2001 1 commit
  22. 04 Apr, 2001 1 commit
  23. 03 Dec, 2000 1 commit
    • Thomas G. Lockhart's avatar
      Repair usage of the OVERLAPS operator. · 6969b8fa
      Thomas G. Lockhart authored
      Allow some operator-like tokens to be used as function names.
      Flesh out support for time, timetz, and interval operators
       and interactions.
      Regression tests pass, but non-reference-platform horology test results
       will need to be updated.
      6969b8fa
  24. 14 Sep, 2000 1 commit
  25. 12 Sep, 2000 1 commit
  26. 16 Mar, 2000 2 commits
  27. 09 Mar, 2000 1 commit
  28. 16 Feb, 2000 1 commit
    • Thomas G. Lockhart's avatar
      All regression tests pass except for rules.sql (unrelated). · 8997675c
      Thomas G. Lockhart authored
      Implement "date/time grand unification".
       Transform datetime and timespan into timestamp and interval.
       Deprecate datetime and timespan, though translate to new types in gram.y.
       Transform all datetime and timespan catalog entries into new types.
       Make "INTERVAL" reserved word allowed as a column identifier in gram.y.
       Remove dt.h, dt.c files, and retarget datetime.h, datetime.c as utility
        routines for all date/time types.
       date.{h,c} now deals with date, time types.
       timestamp.{h,c} now deals with timestamp, interval types.
       nabstime.{h,c} now deals with abstime, reltime, tinterval types.
      Make NUMERIC a known native type for purposes of type coersion. Not tested.
      8997675c
  29. 05 Jan, 2000 1 commit
    • Thomas G. Lockhart's avatar
      Clean up format of tests. · 4c4e68dc
      Thomas G. Lockhart authored
      Remove older "::" type coersion syntax in favor of extended SQL92 style.
      Include a few new tests for datetime/timespan arithmetic.
      4c4e68dc
  30. 20 Sep, 1997 1 commit
  31. 01 Jul, 1997 1 commit
  32. 23 Jun, 1997 1 commit
  33. 11 May, 1997 1 commit