2000-09-29 19:17:41 +02:00
|
|
|
# ----------
|
2010-09-20 22:08:53 +02:00
|
|
|
# src/test/regress/parallel_schedule
|
2007-08-21 03:11:32 +02:00
|
|
|
#
|
|
|
|
# By convention, we put no more than twenty tests in any one parallel group;
|
|
|
|
# this limits the number of connections needed to run the tests.
|
|
|
|
# ----------
|
|
|
|
|
2009-08-24 05:10:16 +02:00
|
|
|
# run tablespace by itself, and first, because it forces a checkpoint;
|
|
|
|
# we'd prefer not to have checkpoints later in the tests because that
|
|
|
|
# interferes with crash-recovery testing.
|
|
|
|
test: tablespace
|
|
|
|
|
2007-08-21 03:11:32 +02:00
|
|
|
# ----------
|
|
|
|
# The first group of parallel tests
|
2000-09-29 19:17:41 +02:00
|
|
|
# ----------
|
2014-04-08 16:27:56 +02:00
|
|
|
test: boolean char name varchar text int2 int4 int8 oid float4 float8 bit numeric txid uuid enum money rangetypes pg_lsn regproc
|
2000-09-29 19:17:41 +02:00
|
|
|
|
|
|
|
# Depends on things setup during char, varchar and text
|
|
|
|
test: strings
|
|
|
|
# Depends on int2, int4, int8, float4, float8
|
|
|
|
test: numerology
|
|
|
|
|
|
|
|
# ----------
|
2007-08-21 03:11:32 +02:00
|
|
|
# The second group of parallel tests
|
2000-09-29 19:17:41 +02:00
|
|
|
# ----------
|
2013-10-09 07:09:18 +02:00
|
|
|
test: point lseg line box path polygon circle date time timetz timestamp timestamptz interval abstime reltime tinterval inet macaddr tstypes comments
|
2000-09-29 19:17:41 +02:00
|
|
|
|
2007-08-21 03:11:32 +02:00
|
|
|
# ----------
|
|
|
|
# Another group of parallel tests
|
|
|
|
# geometry depends on point, lseg, box, path, polygon and circle
|
|
|
|
# horology depends on interval, timetz, timestamp, timestamptz, reltime and abstime
|
|
|
|
# ----------
|
Fix regex back-references that are directly quantified with *.
The syntax "\n*", that is a backref with a * quantifier directly applied
to it, has never worked correctly in Spencer's library. This has been an
open bug in the Tcl bug tracker since 2005:
https://sourceforge.net/tracker/index.php?func=detail&aid=1115587&group_id=10894&atid=110894
The core of the problem is in parseqatom(), which first changes "\n*" to
"\n+|" and then applies repeat() to the NFA representing the backref atom.
repeat() thinks that any arc leading into its "rp" argument is part of the
sub-NFA to be repeated. Unfortunately, since parseqatom() already created
the arc that was intended to represent the empty bypass around "\n+", this
arc gets moved too, so that it now leads into the state loop created by
repeat(). Thus, what was supposed to be an "empty" bypass gets turned into
something that represents zero or more repetitions of the NFA representing
the backref atom. In the original example, in place of
^([bc])\1*$
we now have something that acts like
^([bc])(\1+|[bc]*)$
At runtime, the branch involving the actual backref fails, as it's supposed
to, but then the other branch succeeds anyway.
We could no doubt fix this by some rearrangement of the operations in
parseqatom(), but that code is plenty ugly already, and what's more the
whole business of converting "x*" to "x+|" probably needs to go away to fix
another problem I'll mention in a moment. Instead, this patch suppresses
the *-conversion when the target is a simple backref atom, leaving the case
of m == 0 to be handled at runtime. This makes the patch in regcomp.c a
one-liner, at the cost of having to tweak cbrdissect() a little. In the
event I went a bit further than that and rewrote cbrdissect() to check all
the string-length-related conditions before it starts comparing characters.
It seems a bit stupid to possibly iterate through many copies of an
n-character backreference, only to fail at the end because the target
string's length isn't a multiple of n --- we could have found that out
before starting. The existing coding could only be a win if integer
division is hugely expensive compared to character comparison, but I don't
know of any modern machine where that might be true.
This does not fix all the problems with quantified back-references. In
particular, the code is still broken for back-references that appear within
a larger expression that is quantified (so that direct insertion of the
quantification limits into the BACKREF node doesn't apply). I think fixing
that will take some major surgery on the NFA code, specifically introducing
an explicit iteration node type instead of trying to transform iteration
into concatenation of modified regexps.
Back-patch to all supported branches. In HEAD, also add a regression test
case for this. (It may seem a bit silly to create a regression test file
for just one test case; but I'm expecting that we will soon import a whole
bunch of regex regression tests from Tcl, so might as well create the
infrastructure now.)
2012-02-20 06:52:33 +01:00
|
|
|
test: geometry horology regex oidjoins type_sanity opr_sanity
|
2000-09-29 19:17:41 +02:00
|
|
|
|
|
|
|
# ----------
|
|
|
|
# These four each depend on the previous one
|
|
|
|
# ----------
|
2002-04-05 13:56:55 +02:00
|
|
|
test: insert
|
2000-09-29 19:17:41 +02:00
|
|
|
test: create_function_1
|
|
|
|
test: create_type
|
|
|
|
test: create_table
|
|
|
|
test: create_function_2
|
|
|
|
|
|
|
|
# ----------
|
|
|
|
# Load huge amounts of data
|
|
|
|
# We should split the data files into single files and then
|
|
|
|
# execute two copy tests parallel, to check that copy itself
|
|
|
|
# is concurrent safe.
|
|
|
|
# ----------
|
2006-08-31 01:34:22 +02:00
|
|
|
test: copy copyselect
|
2000-09-29 19:17:41 +02:00
|
|
|
|
|
|
|
# ----------
|
2011-11-09 05:05:14 +01:00
|
|
|
# More groups of parallel tests
|
2000-09-29 19:17:41 +02:00
|
|
|
# ----------
|
2011-11-09 05:05:14 +01:00
|
|
|
test: create_misc create_operator
|
|
|
|
# These depend on the above two
|
2002-10-22 22:20:10 +02:00
|
|
|
test: create_index create_view
|
2000-09-29 19:17:41 +02:00
|
|
|
|
2011-11-09 05:05:14 +01:00
|
|
|
# ----------
|
|
|
|
# Another group of parallel tests
|
|
|
|
# ----------
|
2012-12-09 00:25:48 +01:00
|
|
|
test: create_aggregate create_function_3 create_cast constraints triggers inherit create_table_like typed_table vacuum drop_if_exists updatable_views
|
2011-11-09 05:05:14 +01:00
|
|
|
|
2000-09-29 19:17:41 +02:00
|
|
|
# ----------
|
|
|
|
# sanity_check does a vacuum, affecting the sort order of SELECT *
|
|
|
|
# results. So it should not run parallel to other tests.
|
|
|
|
# ----------
|
|
|
|
test: sanity_check
|
|
|
|
|
|
|
|
# ----------
|
|
|
|
# Believe it or not, select creates a table, subsequent
|
|
|
|
# tests need.
|
|
|
|
# ----------
|
|
|
|
test: errors
|
|
|
|
test: select
|
2002-08-11 04:06:32 +02:00
|
|
|
ignore: random
|
2000-09-29 19:17:41 +02:00
|
|
|
|
|
|
|
# ----------
|
2007-08-21 03:11:32 +02:00
|
|
|
# Another group of parallel tests
|
2000-09-29 19:17:41 +02:00
|
|
|
# ----------
|
2006-01-22 06:20:35 +01:00
|
|
|
test: select_into select_distinct select_distinct_on select_implicit select_having subselect union case join aggregates transactions random portals arrays btree_index hash_index update namespace prepared_xacts delete
|
2000-09-29 19:17:41 +02:00
|
|
|
|
2011-03-20 19:35:39 +01:00
|
|
|
# ----------
|
|
|
|
# Another group of parallel tests
|
|
|
|
# ----------
|
Row-Level Security Policies (RLS)
Building on the updatable security-barrier views work, add the
ability to define policies on tables to limit the set of rows
which are returned from a query and which are allowed to be added
to a table. Expressions defined by the policy for filtering are
added to the security barrier quals of the query, while expressions
defined to check records being added to a table are added to the
with-check options of the query.
New top-level commands are CREATE/ALTER/DROP POLICY and are
controlled by the table owner. Row Security is able to be enabled
and disabled by the owner on a per-table basis using
ALTER TABLE .. ENABLE/DISABLE ROW SECURITY.
Per discussion, ROW SECURITY is disabled on tables by default and
must be enabled for policies on the table to be used. If no
policies exist on a table with ROW SECURITY enabled, a default-deny
policy is used and no records will be visible.
By default, row security is applied at all times except for the
table owner and the superuser. A new GUC, row_security, is added
which can be set to ON, OFF, or FORCE. When set to FORCE, row
security will be applied even for the table owner and superusers.
When set to OFF, row security will be disabled when allowed and an
error will be thrown if the user does not have rights to bypass row
security.
Per discussion, pg_dump sets row_security = OFF by default to ensure
that exports and backups will have all data in the table or will
error if there are insufficient privileges to bypass row security.
A new option has been added to pg_dump, --enable-row-security, to
ask pg_dump to export with row security enabled.
A new role capability, BYPASSRLS, which can only be set by the
superuser, is added to allow other users to be able to bypass row
security using row_security = OFF.
Many thanks to the various individuals who have helped with the
design, particularly Robert Haas for his feedback.
Authors include Craig Ringer, KaiGai Kohei, Adam Brightwell, Dean
Rasheed, with additional changes and rework by me.
Reviewers have included all of the above, Greg Smith,
Jeff McCormick, and Robert Haas.
2014-09-19 17:18:35 +02:00
|
|
|
test: privileges security_label collate matview lock replica_identity rowsecurity
|
2012-10-15 18:18:52 +02:00
|
|
|
|
|
|
|
# ----------
|
|
|
|
# Another group of parallel tests
|
|
|
|
# ----------
|
2013-07-03 17:06:45 +02:00
|
|
|
test: alter_generic misc psql async
|
2011-03-20 19:35:39 +01:00
|
|
|
|
2010-02-12 18:33:21 +01:00
|
|
|
# rules cannot run concurrently with any test that creates a view
|
|
|
|
test: rules
|
2012-07-18 16:16:16 +02:00
|
|
|
# event triggers cannot run concurrently with any test that runs DDL
|
|
|
|
test: event_trigger
|
2000-09-29 19:17:41 +02:00
|
|
|
|
|
|
|
# ----------
|
2007-08-21 03:11:32 +02:00
|
|
|
# Another group of parallel tests
|
2000-09-29 19:17:41 +02:00
|
|
|
# ----------
|
Introduce jsonb, a structured format for storing json.
The new format accepts exactly the same data as the json type. However, it is
stored in a format that does not require reparsing the orgiginal text in order
to process it, making it much more suitable for indexing and other operations.
Insignificant whitespace is discarded, and the order of object keys is not
preserved. Neither are duplicate object keys kept - the later value for a given
key is the only one stored.
The new type has all the functions and operators that the json type has,
with the exception of the json generation functions (to_json, json_agg etc.)
and with identical semantics. In addition, there are operator classes for
hash and btree indexing, and two classes for GIN indexing, that have no
equivalent in the json type.
This feature grew out of previous work by Oleg Bartunov and Teodor Sigaev, which
was intended to provide similar facilities to a nested hstore type, but which
in the end proved to have some significant compatibility issues.
Authors: Oleg Bartunov, Teodor Sigaev, Peter Geoghegan and Andrew Dunstan.
Review: Andres Freund
2014-03-23 21:40:19 +01:00
|
|
|
test: select_views portals_p2 foreign_key cluster dependency guc bitmapops combocid tsearch tsdicts foreign_data window xmlmap functional_deps advisory_lock json jsonb indirect_toast
|
2000-09-29 19:17:41 +02:00
|
|
|
# ----------
|
2007-08-21 03:11:32 +02:00
|
|
|
# Another group of parallel tests
|
2008-12-30 18:11:26 +01:00
|
|
|
# NB: temp.sql does a reconnect which transiently uses 2 connections,
|
|
|
|
# so keep this parallel group to at most 19 tests
|
2000-09-29 19:17:41 +02:00
|
|
|
# ----------
|
2012-09-29 05:32:57 +02:00
|
|
|
test: plancache limit plpgsql copy2 temp domain rangefuncs prepare without_oid conversion truncate alter_table sequence polymorphism rowtypes returning largeobject with xml
|
2004-01-27 01:50:33 +01:00
|
|
|
|
|
|
|
# run stats by itself because its delay may be insufficient under heavy load
|
|
|
|
test: stats
|