Commit Graph

1037 Commits (124b0f9020ad083716f2376f69d8b68cc20cba73)

Author SHA1 Message Date
Burak Yucesoy 124b0f9020 Bump configure PACKAGE_VERSION to 6.2.3 2017-07-13 00:06:46 -06:00
Burak Yucesoy 0849da2708 Add CHANGELOG entry for 6.2.3 2017-07-13 00:06:46 -06:00
Burak Yucesoy dd6a456bed Add tests for concurrent INSERT and VACUUM behaviour 2017-07-13 00:06:46 -06:00
Burak Yucesoy 0f01dc3bb8 Remove LockRelationDistributionMetadata function 2017-07-13 00:06:46 -06:00
Burak Yucesoy ab509db0d8 Use ShareUpdateExclusiveLock instead ShareLock in VACUUM
Before this change, we used ShareLock to acquire lock on distributed tables while
running VACUUM. This makes VACUUM and INSERT block each other. With this change we
changed lock mode from ShareLock to ShareUpdateExclusiveLock, which does not conflict
with the locks INSERT acquire.
2017-07-13 00:06:46 -06:00
Marco Slot e735655d82 Add weird column name to create_distributed_table test 2017-07-06 23:00:56 +02:00
Marco Slot 1678deeecd Handle implicit casts in prepared INSERTs
Backported from citusdata/citus#1487
2017-07-06 22:11:16 +02:00
Marco Slot 43f9758787 Support quoted column-names in COPY logic 2017-06-30 17:07:06 +02:00
Jason Petersen 5bd4583935
Don't call PostProcessUtility for local commands
Backported from citusdata/citus#1457
cherry-pick of citusdata/citus@294aeff

It is intended only to aid in processing of distributed DDL commands,
but as written could execute during local CREATE INDEX CONCURRENTLY
commands.
2017-06-19 16:00:27 -06:00
Jason Petersen b839af761f
Bump configure PACKAGE_VERSION
Forgot this for the OSS 6.2.2 release (which will display 6.2.1 for
SHOW citus.version), but we still can get it into Enterprise.
2017-06-12 16:57:55 -06:00
Jason Petersen 16798e38f9 Add 6.2.2 CHANGELOG entry 2017-06-06 14:29:24 +03:00
Marco Slot fd05849eff Don't take a table lock in ForeignConstraintGetReferencedTableId 2017-05-31 15:27:18 -07:00
Jason Petersen aa2d2f46f4
Bump configure PACKAGE_VERSION
Prepping for release.
2017-05-24 13:56:28 -06:00
Jason Petersen b0aa0479cf
Bump CHANGELOG for 6.2.1 2017-05-24 13:56:28 -06:00
Burak Yucesoy 0c9901f042
Add tests for version check 2017-05-24 13:16:04 -06:00
Burak Yucesoy 52b056c301
Register cache invalidation callback before version checks
With this commit we start to register InvalidateDistRelationCacheCallback
function as cache invalidation callback function before version checks
because during version checks we use cache to look up relation ids of some
relations like pg_dist_relation or pg_dist_partition_logical_relid_index
and we want to know about cache invalidation before accessing them.
2017-05-24 13:16:04 -06:00
Burak Yucesoy 5b300a7aa9
Fix incorrect call to CheckInstalledVersion
During version update, we indirectly calld CheckInstalledVersion via
ChackCitusVersions. This obviously fails because during version update it is
expected to have version mismatch between installed version and binary version.
Thus, we remove that ChackCitusVersions. We now only call ChackAvailableVersion.
2017-05-24 13:16:03 -06:00
Burak Yucesoy 0530974d3d
Add tests for version checks 2017-05-24 13:14:08 -06:00
Burak Yucesoy c1ca6e6819 Add version checks to necessary UDFs 2017-05-22 10:43:40 +03:00
Burak Yucesoy c59481141f Only error out on distributed queries when there is version mismatch
Before this commit, we were erroring out at almost all queries if there is a
version mismatch. With this commit, we started to error out only requested
operation touches distributed tables.

Normally we would need to use distributed cache to understand whether a table
is distributed or not. However, it is not safe to read our metadata tables when
there is a version mismatch, thus it is not safe to create distributed cache.
Therefore for this specific occasion, we directly read from pg_dist_partition
table. However; reading from catalog is costly and we should not use this
method in other places as much as possible.
2017-05-22 10:43:40 +03:00
Burak Yucesoy cf4592ce28 Fix crash during upgrade from 5.2 to 6.2
This commit fixes the problem where we incorrectly try to reach distributed table
cache when the extension is not loaded completely. We tried to reach the cache
because we wanted to get reference table information to activate the node. However
it is actually not necessary to explicitly activate the nodes which come from
master_initialize_node_metadata. Because it only runs during extension creation and
at that time there are no reference tables and all nodes are considered as active.
2017-05-22 10:43:40 +03:00
Jason Petersen 062734a6f5
Bump configure PACKAGE_VERSION
Prepping for release.
2017-05-16 22:40:56 -06:00
Burak Yucesoy ac5fcbe998
Update CHANGELOG for v6.2.0
CHANGELOG changes for 6.2 release
2017-05-16 22:33:29 -06:00
Burak Yücesoy 40ebd93be3 Merge pull request #1412 from citusdata/fix_schema_owner_name
Send correct and quoted owner name while propagating schema creation
2017-05-15 06:11:08 -08:00
Burak Yucesoy 577ffb2bf2 Add tests for non-default schema owner 2017-05-15 16:49:37 +03:00
Burak Yucesoy 5a3a32d6df Quote schema's owner name
When we propogate the schema creation command to data nodes we add schema's
owner name too. Before this patch, we did not quote the owner's name which
causes problems with the names containing characters like '-'.
2017-05-15 16:26:32 +03:00
Burak Yucesoy 1b5560b2f7 Fix OwnerName function to work with schemas
We incorrectly try to use relation cache to find particular schema's owner and
when we cannot find the schema in the relation cache(i.e always), we automatically
used current user as the schema's owner. This means we always created schemas in
the data nodes with current user. With this patch we started to use namespace
cache to find schemas.
2017-05-15 16:26:32 +03:00
Önder Kalacı a7c65a3ed8 Add 9.5 output file for isolation test (#1413)
With commit we add one additional regression test output file which
has some output syntax differences with its 9.6 equivalence.
2017-05-15 15:27:37 +03:00
Jason Petersen fb836ee7cc Merge pull request #1343 from citusdata/test_custom_compiled_postgres
Use custom compiled PostgreSQL in Travis for merge commits

cr: @jasonmp85
2017-05-12 15:15:55 -06:00
Jason Petersen 05d42b01d3
Mark test failing in 9.5 as 'ignore'
This test was added this morning, but is failing in 9.5.
2017-05-12 15:00:42 -06:00
Burak Yucesoy 75d58cbf94
Travis merge jobs use custom-compiled PostgreSQL
With this commit, we start to use custom compiled PostgreSQL builds in
Travis for merge commits. This allows us to run isolation tests and
PostgreSQL's own regression tests along with our regression tests in
Travis.

Since manually compiling PostgreSQL takes more time and we also add new
tests, we only enable running these tests on merge commits.
2017-05-12 15:00:42 -06:00
Önder Kalacı 3adbbdcdcb Fix typo in the regression test (#1410) 2017-05-12 15:46:38 +03:00
Önder Kalacı e0257aecd9 Accept invalidation messages before accessing the metadata cache (#1406)
* Accept invalidation messages before accessing the metadata cache

This commit is crucial to prevent stale metadata reads from the
cache. Without this commit, some of the operations may use stale
metadata which could end up with various bugs such as crashes,
inconsistent/lost data etc.

As an example, consider that a COPY operation is blocked on shard
metadata lock. Another concurrent session updates the metadata and
invalidates the cache. However, since Citus doesn't accept invalidations,
COPY continues with the stale metadata once it acquires the lock.

With this commit, we make sure that invalidation messages are accepted
just before accessing the metadata cache and preventing any operation to
use stale metadata.

* Add isolation tests for placement changes and conccurrent operations

   - add node with reference table vs COPY/insert/update/DDL
   - repair shard vs COPY/insert/update/DDL
   - repair shard vs repair shard
2017-05-12 12:32:35 +03:00
Marco Slot 94151c9aef Merge pull request #1405 from citusdata/fix_copy_create_distributed_table
Ensure all preceding writes are visible in data migration
2017-05-11 10:05:15 +02:00
Marco Slot 6f9e18de24 Ensure all preceding writes are visible in data migration 2017-05-11 09:42:12 +02:00
Önder Kalacı 3ec502b286 Add support for parametrized execution for subquery pushdown (#1356)
Distributed query planning for subquery pushdown is done on the original
query. This prevents the usage of external parameters on the execution.
To overcome this, we manually replace the parameters on the original
query.
2017-05-10 09:38:48 +03:00
Marco Slot 97334a9123 Merge pull request #1382 from citusdata/fix_drop_locking
Fix locking in master_drop_all_shards / master_apply_delete_command
2017-05-08 18:07:03 +02:00
Metin Doslu 37026dc351 Add truncate first isolation tests 2017-05-08 17:26:55 +02:00
Marco Slot a8f368fced Fix locking in master_drop_all_shards / master_apply_delete_command 2017-05-08 17:26:55 +02:00
Jason Petersen 8e2dd3e1f3
Update CHANGELOG for v6.1.1 2017-05-04 17:49:57 -07:00
Jason Petersen 61fbcaeca7 Merge pull request #1360 from citusdata/fix_prepared_ddl
Don't change parse tree of DDL commands

cr: @anarazel, @jasonmp85
2017-05-04 13:44:46 -07:00
Marco Slot 853f07dd33 Don't change query tree of DDL commands 2017-05-04 21:34:28 +02:00
Jason Petersen f0c6c47c4e
Fix CREATE SEQUENCE generation bug
Apparently we've had a typo all this time causing us to pass the cache
value for the start value.
2017-05-03 21:47:06 -07:00
Önder Kalacı ef6d3587b6 Skip exhaustive test in CoPartitionedTables() if declared colocated (#1376)
That's considerably cheaper.
2017-05-02 03:33:21 +03:00
Önder Kalacı b74ed3c8e1 Subqueries in where -- updated (#1372)
* Support for subqueries in WHERE clause

This commit enables subqueries in WHERE clause to be pushed down
by the subquery pushdown logic.

The support covers:
  - Correlated subqueries with IN, NOT IN, EXISTS, NOT EXISTS,
    operator expressions such as (>, <, =, ALL, ANY etc.)
  - Non-correlated subqueries with (partition_key) IN (SELECT partition_key ..)
    (partition_key) =ANY (SELECT partition_key ...)

Note that this commit heavily utilizes the attribute equivalence logic introduced
in the 1cb6a34ba8. In general, this commit mostly
adjusts the logical planner not to error out on the subqueries in WHERE clause.

* Improve error checks for subquery pushdown and INSERT ... SELECT

Since we allow subqueries in WHERE clause with the previous commit,
we should apply the same limitations to those subqueries.

With this commit, we do not iterate on each subquery one by one.
Instead, we extract all the subqueries and apply the checks directly
on those subqueries. The aim of this change is to (i) Simplify the
code (ii) Make it close to the checks on INSERT .. SELECT code base.

* Extend checks for unresolved paramaters to include SubLinks

With the presence of subqueries in where clause (i.e., SubPlans on the
query) the existing way for checking unresolved parameters fail. The
reason is that the parameters for SubPlans are kept on the parent plan not
on the query itself (see primnodes.h for the details).

With this commit, instead of checking SubPlans on the modified plans
we start to use originalQuery, where SubLinks represent the subqueries
in where clause. The unresolved parameters can be found on the SubLinks.

* Apply code-review feedback

* Remove unnecessary copying of shard interval list

This commit removes unnecessary copying of shard interval list. Note
that there are no copyObject function implemented for shard intervals.
2017-05-01 17:20:21 +03:00
Marco Slot 8dab40da69 Merge pull request #1357 from citusdata/fix_gitignore
Add missing regression test output files to .gitignore
2017-04-28 19:13:26 -07:00
Marco Slot dee34c24fd Add missing regression test output files to .gitignore 2017-04-29 03:56:14 +02:00
Marco Slot 5ad8bd37f1 Merge pull request #1265 from citusdata/truncate_propagation
Honour enable_ddl_propagation in truncate trigger
2017-04-28 18:47:52 -07:00
Marco Slot 8edba5f309 Honour enable_ddl_propagation in truncate trigger 2017-04-29 03:32:52 +02:00
Brian Cloutier 22e7aa9a4f Fix crash in isolation tests
- There was a crash when the table a shardid belonged to changed during
  a session. Instead of crashing (a failed assert) we now throw an error
- Update the isolation test which was crashing to no longer exercise
  that code path
- Add a regression test to check that the error is thrown
2017-04-29 04:25:26 +03:00