Commit Graph

453 Commits (e678c57648bc800d7f6d325d241e8d825ba49204)

Author SHA1 Message Date
Önder Kalacı e678c57648 Merge pull request #838 from citusdata/update_function_name
Update ColocatedShardPlacementList() function name to
2016-10-04 11:31:47 +03:00
Onder Kalaci 06217bade0 Update ColocatedShardPlacementList() function name to
ColocatedShardIntervalList() which was intented.
2016-10-04 09:51:42 +03:00
Marco Slot e1f86bb9ae Merge pull request #837 from citusdata/bugfix/pnstrdup
Avoid use of pnstrdup
2016-10-04 07:09:15 +02:00
Marco Slot b79c8657d6 Avoid use of pnstrdup 2016-10-04 00:31:53 +02:00
Marco Slot 01cec61288 Merge pull request #783 from robin900/new-extend-names
Provides safe, backwards-compatible shard-extended names to any object name
2016-10-03 23:17:44 +02:00
Robin Thomas d23f11490a Provides safe, idempotent shard-extended names to any object name
related to a table that might be distributed, allowing any name
that is within regular PostgreSQL length limits to be extended
with a shard ID for use in shards on workers. Handles multi-byte
character boundaries in identifiers when making prefixes for
shard-extended names. Includes tests.
Uses hash_any from PostgreSQL's access/hashfunc.c.
Removes AppendShardIdToStringInfo() as it's used only once
and arguably is best replaced there with a call to AppendShardIdToName().

Adds UDF shard_name(object_name, shard_id) to expose the shard-extended
name logic to other PL/PGSQL, UDFs and scripts.

Bumps version to 6.0-2 to allow for UDF to be created in migration script.

Fixes citusdata/citus#781 and citusdata/citus#179.
2016-10-03 17:02:34 -04:00
Andres Freund 1c1c502318 Merge pull request #834 from citusdata/valgrind-clean
Fix issues making valgrind fail
2016-10-03 14:01:27 -07:00
Andres Freund 3f8fb191cc Don't create hash-table of zero size in TaskHashCreate().
hash_create(), called by TaskHashCreate(), doesn't work correctly for a
zero sized hash table. This triggers valgrind errors, and could
potentially cause crashes even without valgring.

This currently happens for Jobs with 0 tasks. These probably should be
optimized away before reaching TaskHashCreate(), but that's a bigger
change.
2016-10-03 13:07:43 -07:00
Andres Freund 9ebc46d15c Initialize count_agg_clauses argument to 0.
count_agg_clause *adds* the cost of the aggregates to the state
variable, it doesn't reinitialize it. That is intentional, as it is used
to incrementally add costs in some places.
2016-10-03 13:07:43 -07:00
Andres Freund 6de3a92e79 Lower "waiting for activity on tasks took longer than" log level.
It's perfectly normal to wait longer in several circumstances, and the
output can lead to spurious regression output changes.
2016-10-03 13:07:43 -07:00
Marco Slot bd589b4555 Merge pull request #831 from citusdata/ultimate_citus_improvement
Change logicalrelid type to regclass
2016-10-03 20:34:57 +02:00
Marco Slot 992179c187 Change logicalrelid type in pg_dist_partition and pg_dist_shard to regclass 2016-10-03 20:27:16 +02:00
Marco Slot 5c5f7d4478 Merge pull request #832 from citusdata/bugfix/remove_eventinvoke_trigger
Remove EventInvokeTrigger from regression test output
2016-10-03 20:26:19 +02:00
Marco Slot cf419be848 Remove EventInvokeTrigger from regression test output 2016-10-03 20:21:15 +02:00
Marco Slot 6f51aa6e92 Merge pull request #819 from robin900/handle-repartitions-by-typname
During repartitions use partitionColumnType as ::regtype so that UDTs work
2016-10-03 19:50:45 +02:00
Robin Thomas 1e80d27585 During repartitions, the partitionColumnType argument sent to workers
is now a `::regtype` using the qualified name of the column type,
not the column type OID which may differ between master/worker nodes.
Test coverage of a hash reparitition using a UDT as the join column.

Note that the UDFs `worker_hash_partition_table` and `worker_range_partition_table`
are unchanged, and rightly expect an OID for the column type; but the
planner code building the commands now allows for `::regtype` casting
to do its magic.

Fixes citusdata/citus#111.
2016-10-03 13:41:20 -04:00
Marco Slot a378b9e8a9 Merge pull request #808 from robin900/partial-index-tests
Added test coverage for partial unique indexes, exclusion constraints
2016-10-03 17:32:16 +02:00
Robin Thomas de5242fa41 Added test coverage for partial unique indexes and exclude constraints. 2016-10-03 10:47:30 -04:00
Eren Başak 10b06da429 Merge pull request #825 from citusdata/fix_command_counter_increment_wrong_place
Fix command counter increment bug
2016-10-03 17:16:58 +03:00
Eren Basak d169caf637 Fix command counter increment bug
Fixes citusdata/citus#714

On `InsertShardRow`, we previously called `CommandCounterIncrement()` before
`CitusInvalidateRelcacheByRelid(relationId);`. This might prevent to skip
invalidation of the distributed table in the next access within the same session.
2016-10-03 17:00:27 +03:00
Eren Başak 13dbe1ecb4 Merge pull request #742 from citusdata/feature/task_tracker_folders
Differentiate worker and master job temporary folders - MX Backport
2016-10-03 14:29:54 +03:00
Onder Kalaci 727bed9d69 Differentiate worker and master job temporary folders
This commit enables to create different worker and master temporary folders.
This change is important for citus-mx on task-tracker execution. In simple words,
on citus-mx, the worker could actually be reponsible for the master tasks as well.
Prior to this change, both master and worker logic on task-tracker executor was
accessing and using the same files for different purposes which was dangerous on
certain cases (i.e., when task_tracker_delay is low).
2016-10-03 14:24:08 +03:00
Jason Petersen 28a7d769cb Merge pull request #824 from citusdata/use_lock_tranches
Move task tracker lwlocks into their own tranche

cr: @anarazel
2016-09-30 16:11:11 -06:00
Andres Freund 5c02c7dd49 Move task tracker lwlocks into their own tranche.
RequestAddinLWLocks()/LWLockAssign() are gone in 9.6. Luckily all citus
supported postgres versions support tranches, so use those.
2016-09-30 16:06:49 -06:00
Jason Petersen 5a57d7f568 Merge pull request #823 from citusdata/update_postgresql_files
Update PostgreSQL-sourced files with latest changes

cr: @anarazel
2016-09-30 16:06:28 -06:00
Jason Petersen 2a3d8b2913 Remove references to 9.4
Some still lingered.
2016-09-29 17:35:19 -06:00
Jason Petersen 53cd06d4fc Remove alternate multi_hash test file
This was made irrelevant by Citus v5.1.0.
2016-09-29 16:43:19 -06:00
Jason Petersen f4210e1f0e Remove references to PostgreSQL 9.4 support files
No longer extant.
2016-09-29 15:54:38 -06:00
Jason Petersen 5784240df3 Remove gitattributes for csql files
This was missed before.
2016-09-29 15:54:38 -06:00
Jason Petersen 44a5337abd Remove unused dumputils.h header
Believe this was used by csql, which is now gone.
2016-09-29 15:54:38 -06:00
Jason Petersen 44c7626f0c Update ruleutils_95 with latest PostgreSQL changes
Hand-applied changes from a diff I generated between 9.5.0 and 9.5.4.
2016-09-29 15:54:38 -06:00
Marco Slot 9dcba97998 Merge pull request #815 from citusdata/bugfix/count_null
Make count return 0 if all shards are pruned away
2016-09-29 20:32:46 +02:00
Marco Slot 2dfe17b75e Make count return 0 if all shards are pruned away
Before this change, count on a distributed returned NULL if all shards
were pruned away, because on the master we replace with count(..) call
with a sum(..) call to sum the counts from the shards. However, sum
returns NULL when there are no rows, whereas count is expected to return
0.
2016-09-29 20:27:26 +02:00
Jason Petersen 926ed89e9f Merge pull request #818 from citusdata/fix_xact_callbacks
Directly register transaction callbacks in PG_init

cr: @anarazel
2016-09-29 11:52:03 -06:00
Jason Petersen 5375683919 Directly register multi-shard callbacks in PG_init
I had changed these callbacks to use the same method I chose for the
router executor (for consistency), but as that method is flawed, we now
want to ensure we directly register them from PG_init as well.
2016-09-29 11:43:19 -06:00
Jason Petersen f82e17172e Directly register router xact callbacks in PG_init
Not entirely sure why we went with the shared memory hook approach, but
it causes problems (multiple registration) during crashes. Changing to
a simple direct registration call from PG_init.
2016-09-29 11:43:18 -06:00
Burak Yücesoy 89527056e5 Merge pull request #785 from citusdata/colocation_features
Internal co-location API
2016-09-29 12:43:02 +03:00
Burak Yucesoy 1a618b9c43 Internal co-location API
With this commit we introduce internal API for co-location related operations.
2016-09-29 11:56:53 +03:00
Jason Petersen fac938b224 Merge pull request #814 from citusdata/copy_to_distributed_table_final_goodbye
Remove copy_to_distributed_table

cr: @jasonmp85
2016-09-28 11:32:08 -06:00
Marco Slot fe900581cd Remove copy_to_distributed_table 2016-09-28 11:27:54 -06:00
Murat Tuncer b7d4f99d80 Merge pull request #806 from citusdata/fix_805_where_false
Make join queries with where false clauses router plannable
2016-09-28 18:54:19 +03:00
Murat Tuncer ba3d035b23 Make where false queries router plannable 2016-09-28 18:49:26 +03:00
Murat Tuncer 49495f2ed2 Merge pull request #784 from citusdata/fix_594_shard_refresh
Add UDF master_expire_table_cache
2016-09-28 12:13:01 +03:00
Murat Tuncer 3ef841c67b Add UDF master_expire_table_cache 2016-09-28 12:08:37 +03:00
Jason Petersen b029ef7a5d Merge pull request #812 from citusdata/fix_uniq_constraint_segfault
Fix unique-violation-in-xact segfault

cr: @anarazel
2016-09-27 16:51:48 -06:00
Jason Petersen f9e63097c9 Fix unique-violation-in-xact segfault
An interaction between ReraiseRemoteError and DML transaction support
causes segfaults:

  * ReraiseRemoteError calls PurgeConnection, freeing a connection...
  * That connection is still in the xactParticipantHash

At transaction end, the memory in the freed connection might happen to
pass the "is this connection OK?" check, causing us to try to send an
ABORT over that connection. By removing it from the transaction hash
before calling ReraiseRemoteError, we avoid this possibility.
2016-09-27 16:44:03 -06:00
Metin Döşlü 33b91bbf8e Merge pull request #770 from citusdata/fix/insert_query_inside_plpgsql
Pass text oid instead of invalid oid for null values
2016-09-27 08:46:04 +03:00
Metin Doslu db64995353 Pass text oid inteads of invalid oid for null values
Passing invalid oids even for null values in PQsendQueryParams() causes worker
nodes to fail. Therefore, we pass text oid for null values.
2016-09-27 08:15:46 +03:00
Jason Petersen 5047f325db Merge pull request #776 from citusdata/feature/no-movement
Support NoMovement direction in router executor

cr: @jasonmp85
2016-09-26 18:32:33 -06:00
Andres Freund 5e01434402 Support NoMovement direction in router executor
This is mainly interesting because it allows to use RETURN QUERY/RETURN
QUERY EXECUTE and FOR ... IN .. LOOPs in plpgsql.
2016-09-26 18:28:36 -06:00