postgresql/src/test/regress/sql
Tom Lane d761fe2182 Fix precision and rounding issues in money multiplication and division.
The cash_div_intX functions applied rint() to the result of the division.
That's not merely useless (because the result is already an integer) but
it causes precision loss for values larger than 2^52 or so, because of
the forced conversion to float8.

On the other hand, the cash_mul_fltX functions neglected to apply rint() to
their multiplication results, thus possibly causing off-by-one outputs.

Per C standard, arithmetic between any integral value and a float value is
performed in float format.  Thus, cash_mul_flt4 and cash_div_flt4 produced
answers good to only about six digits, even when the float value is exact.
We can improve matters noticeably by widening the float inputs to double.
(It's tempting to consider using "long double" arithmetic if available,
but that's probably too much of a stretch for a back-patched fix.)

Also, document that cash_div_intX operators truncate rather than round.

Per bug #14663 from Richard Pistole.  Back-patch to all supported branches.

Discussion: https://postgr.es/m/22403.1495223615@sss.pgh.pa.us
2017-05-21 13:05:16 -04:00
..
.gitignore
abstime.sql
advisory_lock.sql
aggregates.sql Fix sharing Agg transition state of DISTINCT or ordered aggs. 2016-12-20 09:20:17 +02:00
alter_generic.sql Change CREATE STATISTICS syntax 2017-05-12 14:59:35 -03:00
alter_operator.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
alter_table.sql Don't explicitly mark range partitioning columns NOT NULL. 2017-05-18 13:49:31 -04:00
amutils.sql Add SQL-accessible functions for inspecting index AM properties. 2016-08-13 18:31:14 -04:00
arrays.sql Improve expression evaluation test coverage. 2017-03-11 15:41:34 -08:00
async.sql Add new function pg_notification_queue_usage. 2015-07-17 09:12:03 -04:00
bit.sql
bitmapops.sql
boolean.sql Improve expression evaluation test coverage. 2017-03-11 15:41:34 -08:00
box.sql Fix support for some operators (&<, &>, $<|, |&>) in box operator class 2017-03-21 16:23:10 +03:00
brin.sql Fix BRIN cost estimation 2017-04-06 17:51:53 -03:00
btree_index.sql Add test cases for indexam operations not currently covered. 2014-11-19 19:47:43 +02:00
case.sql Faster expression evaluation and targetlist projection. 2017-03-25 14:52:06 -07:00
char.sql
circle.sql
cluster.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
collate.icu.utf8.sql Remove ICU tests from default run 2017-03-25 00:30:26 -04:00
collate.linux.utf8.sql ICU support 2017-03-23 15:28:48 -04:00
collate.sql Show sort ordering options in EXPLAIN output. 2015-01-16 18:19:00 -05:00
combocid.sql Fix locking a tuple updated by an aborted (sub)transaction 2016-09-09 15:54:29 -03:00
comments.sql
conversion.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
copy2.sql Support "COPY view FROM" for views with INSTEAD OF INSERT triggers. 2016-11-10 14:13:43 -05:00
copydml.sql COPY (INSERT/UPDATE/DELETE .. RETURNING ..) 2015-11-27 19:11:22 +03:00
copyselect.sql
create_aggregate.sql Fix type-safety problem with parallel aggregate serial/deserialization. 2016-06-22 16:52:41 -04:00
create_am.sql Fix broken dependency-mongering for index operator classes/families. 2016-04-13 23:33:31 -04:00
create_cast.sql Make CREATE TYPE print warnings if a datatype's I/O functions are volatile. 2014-11-05 11:44:06 -05:00
create_function_3.sql Allow referring to functions without arguments when unique 2017-03-14 23:55:19 -04:00
create_index.sql Reset the proper GUC in create_index test. 2017-01-18 16:33:54 -05:00
create_misc.sql
create_operator.sql Allow named parameters to be specified using => in addition to := 2015-03-10 11:09:41 -04:00
create_table.sql Don't explicitly mark range partitioning columns NOT NULL. 2017-05-18 13:49:31 -04:00
create_table_like.sql Identity columns 2017-04-06 08:41:37 -04:00
create_type.sql Fix pg_dump to dump shell types. 2015-08-04 19:34:12 -04:00
create_view.sql Make new expression eval code reject references to dropped columns. 2017-03-28 18:05:14 -04:00
date.sql Allow negative years in make_date to represent BC years 2017-01-19 09:45:38 -03:00
dbsize.sql Add pg_size_bytes() to parse human-readable size strings. 2016-02-20 09:57:27 +00:00
delete.sql
dependency.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
domain.sql Avoid caching expression state trees for domain constraints across queries. 2015-11-29 18:18:42 -05:00
drop_if_exists.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
drop_operator.sql Fix DROP OPERATOR to reset oprcom/oprnegate links to the dropped operator. 2016-03-25 12:33:16 -04:00
enum.sql Support renaming an existing value of an enum type. 2016-09-07 16:11:56 -04:00
equivclass.sql Improve RLS planning by marking individual quals with security levels. 2017-01-18 12:58:20 -05:00
errors.sql Spelling fixes in code comments 2017-03-14 12:58:39 -04:00
event_trigger.sql Remove objname/objargs split for referring to objects 2017-03-06 13:31:47 -05:00
expressions.sql Improve expression evaluation test coverage. 2017-03-11 15:41:34 -08:00
float4.sql
float8.sql Improve regression tests for degree-based trigonometric functions. 2016-04-19 16:47:21 -04:00
foreign_data.sql Prohibit transition tables on views and foreign tables. 2017-05-09 23:34:02 -04:00
foreign_key.sql Check for pending trigger events on far end when dropping an FK constraint. 2016-11-25 13:44:47 -05:00
functional_deps.sql
geometry.sql Add geometry/range functions to support BRIN inclusion 2015-05-05 15:22:24 -03:00
gin.sql Make GIN regression test stable. 2016-02-08 23:41:46 +09:00
gist.sql Fix pfree-of-already-freed-tuple when rescanning a GiST index-only scan. 2017-05-04 13:59:39 -04:00
groupingsets.sql Attempt to stabilize grouping sets regression test plans. 2017-03-27 05:56:33 +01:00
guc.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
hash_index.sql Speed up hash_index regression test. 2017-04-12 16:17:53 -04:00
horology.sql Make to_timestamp() and to_date() range-check fields of their input. 2016-09-28 14:36:17 -04:00
hs_primary_extremes.sql Remove all references to "xlog" from SQL-callable functions in pg_proc. 2017-02-09 15:10:09 -05:00
hs_primary_setup.sql Remove all references to "xlog" from SQL-callable functions in pg_proc. 2017-02-09 15:10:09 -05:00
hs_standby_allowed.sql Better fix for sequence access in hot standby test 2017-01-04 08:47:18 -05:00
hs_standby_check.sql
hs_standby_disallowed.sql
hs_standby_functions.sql Remove all references to "xlog" from SQL-callable functions in pg_proc. 2017-02-09 15:10:09 -05:00
identity.sql Identity columns 2017-04-06 08:41:37 -04:00
indirect_toast.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
inet.sql Create an SP-GiST opclass for inet/cidr. 2016-08-23 15:16:30 -04:00
inherit.sql Copy partitioned_rels lists to avoid shared substructure. 2017-05-19 15:26:05 -04:00
init_privs.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
insert.sql Fix multi-column range partitioning constraints. 2017-05-13 11:36:41 -04:00
insert_conflict.sql Revert "Allow ON CONFLICT .. DO NOTHING on a partitioned table." 2017-03-31 16:48:21 -04:00
int2.sql Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
int4.sql Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
int8.sql Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
interval.sql Fix integer-overflow problems in interval comparison. 2017-04-05 23:51:27 -04:00
join.sql Reduce semijoins with unique inner relations to plain inner joins. 2017-05-01 14:53:42 -04:00
json.sql Make json_populate_record and friends operate recursively 2017-04-06 22:22:13 -04:00
json_encoding.sql Fix whitespace 2015-10-11 21:44:27 -04:00
jsonb.sql Make json_populate_record and friends operate recursively 2017-04-06 22:22:13 -04:00
large_object.sql pg_upgrade: Fix large object COMMENTS, SECURITY LABELS 2017-03-06 17:03:57 -05:00
limit.sql Fix failure to mark all aggregates with appropriate transtype. 2016-07-02 13:23:12 -04:00
line.sql Revert "Tweak "line" test to avoid negative zeros on some platforms" 2013-10-25 15:50:31 -04:00
lock.sql Add a basic atomic ops API abstracting away platform/architecture details. 2014-09-25 23:49:05 +02:00
lseg.sql
macaddr.sql Allow input format xxxx-xxxx-xxxx for macaddr type 2014-10-21 16:16:39 -04:00
macaddr8.sql Add support for EUI-64 MAC addresses as macaddr8 2017-03-15 11:16:25 -04:00
matview.sql Remove useless and rather expensive stanza in matview regression test. 2017-05-03 19:37:01 -04:00
misc_functions.sql Add num_nulls() and num_nonnulls() to count NULL arguments. 2016-02-04 23:03:37 -05:00
money.sql Fix precision and rounding issues in money multiplication and division. 2017-05-21 13:05:16 -04:00
name.sql Introduce parse_ident() 2016-03-18 18:16:14 +03:00
namespace.sql Regression tests for SCHEMA commands 2013-12-11 20:45:15 +00:00
numeric.sql Speed up SUM calculation in numeric aggregates. 2016-09-02 11:51:49 +03:00
numeric_big.sql Fix corner-case loss of precision in numeric pow() calculation 2016-05-05 11:16:17 +01:00
numerology.sql
object_address.sql Standardize terminology for pg_statistic_ext entries. 2017-05-14 10:55:01 -04:00
oid.sql
oidjoins.sql Update oidjoins regression test for v10. 2017-05-15 14:04:11 -04:00
opr_sanity.sql Micro-optimize some slower queries in the opr_sanity regression test. 2017-04-29 20:14:52 -04:00
password.sql Remove support for password_encryption='off' / 'plain'. 2017-05-08 11:26:07 +03:00
path.sql
pg_lsn.sql Tweak new regression test case for better portability. 2014-06-04 21:31:41 -04:00
plancache.sql Change plan caching to honor, not resist, changes in search_path. 2013-01-25 14:14:41 -05:00
plpgsql.sql Don't permit transition tables with TRUNCATE triggers. 2017-05-09 23:24:23 -04:00
point.sql Fix gist_box_same and gist_point_consistent to handle fuzziness correctly. 2013-02-08 18:03:17 -05:00
polygon.sql regression tests: remove polygon diagrams 2015-03-19 22:10:52 -04:00
polymorphism.sql Fix incorrect handling of polymorphic aggregates used as window functions. 2016-10-09 12:49:37 -04:00
portals.sql Fix some interrelated planner issues with initPlans and Param munging. 2016-07-01 20:06:05 -04:00
portals_p2.sql
prepare.sql
prepared_xacts.sql Remove unnecessary dependency on statement_timeout in prepared_xacts test. 2017-03-13 16:46:32 -04:00
privileges.sql Add security checks to selectivity estimation functions 2017-05-08 09:26:32 -04:00
psql.sql Fix behavior of psql's \p to agree with \g, \w, etc. 2017-04-02 16:50:25 -04:00
psql_crosstab.sql Fix incorrect error reporting for duplicate data in \crosstabview. 2016-12-25 16:04:45 -05:00
publication.sql Rework the options syntax for logical replication commands 2017-05-12 08:57:49 -04:00
random.sql
rangefuncs.sql Make new expression eval code reject references to dropped columns. 2017-03-28 18:05:14 -04:00
rangetypes.sql Fix tqueue.c's range-remapping code. 2016-07-29 14:13:19 -04:00
regex.linux.utf8.sql Make locale-dependent regex character classes work for large char codes. 2016-09-05 17:06:29 -04:00
regex.sql Implement regexp_match(), a simplified alternative to regexp_matches(). 2016-08-17 18:33:01 -04:00
regproc.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
reltime.sql
replica_identity.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
returning.sql Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
roleattributes.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
rolenames.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
rowsecurity.sql Add explicit ORDER BY to a few tests that exercise hash-join code. 2017-02-08 16:58:21 -08:00
rowtypes.sql Clean up after insufficiently-researched optimization of tuple conversions. 2017-04-06 21:10:20 -04:00
rules.sql Standardize terminology for pg_statistic_ext entries. 2017-05-14 10:55:01 -04:00
sanity_check.sql Change the relkind for partitioned tables from 'P' to 'p'. 2017-03-10 13:15:47 -05:00
security_label.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
select.sql Expose explain's SUMMARY option 2017-03-08 15:14:03 -05:00
select_distinct.sql Disable physical tlist if any Var would need multiple sortgroupref labels. 2016-05-26 14:52:30 -04:00
select_distinct_on.sql
select_having.sql
select_implicit.sql
select_into.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
select_parallel.sql Fix testing of parallel-safety of SubPlans. 2017-04-18 15:43:56 -04:00
select_views.sql Improve qual pushdown for RLS and SB views 2015-04-27 12:29:42 -04:00
sequence.sql Identity columns 2017-04-06 08:41:37 -04:00
spgist.sql Add test cases for indexam operations not currently covered. 2014-11-19 19:47:43 +02:00
stats.sql stats regression test's wait_for_stats() must check timestamp too. 2017-05-14 23:33:18 -04:00
stats_ext.sql Fix handling of extended statistics during ALTER COLUMN TYPE. 2017-05-14 12:22:25 -04:00
strings.sql Fix regexp_matches() handling of zero-length matches. 2013-07-31 11:31:22 -04:00
subscription.sql Improve CREATE SUBSCRIPTION option parsing 2017-05-17 20:47:37 -04:00
subselect.sql Fix placement of initPlans when forcibly materializing a subplan. 2017-02-02 19:11:32 -05:00
sysviews.sql Invent pg_hba_file_rules view to show the content of pg_hba.conf. 2017-01-30 18:00:26 -05:00
tablesample.sql Make tablesample work with partitioned tables. 2017-02-24 12:23:28 +05:30
temp.sql
text.sql Move checking an explicit VARIADIC "any" argument into the parser. 2013-07-18 11:52:12 -04:00
tidscan.sql Improve regression test coverage for TID scanning. 2017-03-20 12:30:23 -04:00
time.sql
timestamp.sql Be more careful about out-of-range dates and timestamps. 2016-03-16 19:09:28 -04:00
timestamptz.sql Fix timestamptz regression test to still work with latest IANA zone data. 2017-03-09 17:20:33 -05:00
timetz.sql
tinterval.sql
transactions.sql Fix subtransaction cleanup after an outer-subtransaction portal fails. 2015-09-04 13:37:14 -04:00
triggers.sql Revert "Add a test for transition table usage in FOR EACH ROW trigger." 2017-05-16 17:15:33 -05:00
truncate.sql Allow ALTER TABLE ONLY on partitioned tables 2017-04-25 16:57:43 -04:00
tsdicts.sql Spelling fixes 2017-03-14 12:58:39 -04:00
tsearch.sql Ensure that a tsquery like '!foo' matches empty tsvectors. 2017-01-26 12:18:07 -05:00
tsrf.sql Support hashed aggregation with grouping sets. 2017-03-27 04:20:54 +01:00
tstypes.sql Ensure that a tsquery like '!foo' matches empty tsvectors. 2017-01-26 12:18:07 -05:00
txid.sql Add a txid_status function. 2017-03-24 12:00:53 -04:00
type_sanity.sql Implement multivariate n-distinct coefficients 2017-03-24 14:06:10 -03:00
typed_table.sql Remove unnecessairly duplicated gram.y productions 2017-04-27 20:14:39 -04:00
union.sql Fix planner error (or assert trap) with nested set operations. 2017-04-07 12:18:38 -04:00
updatable_views.sql Use non-conflicting table names in new regression test case. 2017-01-24 19:02:22 -05:00
update.sql Allow partitioned tables to be dropped without CASCADE 2017-03-06 15:50:53 +05:30
uuid.sql Fix whitespace issues found by git diff --check, add gitattributes 2013-11-10 14:48:29 -05:00
vacuum.sql Fix relcache reference leak. 2017-03-07 11:27:21 -05:00
varchar.sql
window.sql Allow pushdown of WHERE quals into subqueries with window functions. 2014-06-27 23:08:08 -07:00
with.sql Add infrastructure to support EphemeralNamedRelation references. 2017-03-31 23:17:18 -05:00
without_oid.sql
xml.sql Support XMLTABLE query expression 2017-03-08 12:40:26 -03:00
xmlmap.sql Fix cursor_to_xml in tableforest false mode 2017-05-03 21:41:10 -04:00