Pallavi Sontakke [Tue, 19 Jul 2016 05:32:40 +0000 (11:02 +0530)]
Add test case for Issue #7
Pallavi Sontakke [Tue, 19 Jul 2016 05:17:49 +0000 (10:47 +0530)]
Add test case for Issue #5
Pallavi Sontakke [Fri, 15 Jul 2016 12:32:46 +0000 (18:02 +0530)]
Add test case for Issue #81
Create empty cluster and add nodes multiple times
to reproduce the issue. This issue occurs intermittently.
Pallavi Sontakke [Fri, 15 Jul 2016 10:48:39 +0000 (16:18 +0530)]
Add test case for Issue #16
Pallavi Sontakke [Fri, 15 Jul 2016 05:05:51 +0000 (10:35 +0530)]
Add test case for SQLsmith Issue #102
Pavan Deolasee [Tue, 12 Jul 2016 09:07:22 +0000 (14:37 +0530)]
Do not FQS EXECUTE DIRECT statements.
Executor is not prepared to handle that and its not necessary since EXECUTE
DIRECT implies direct execution on the target node anyways
Pavan Deolasee [Tue, 12 Jul 2016 07:03:23 +0000 (12:33 +0530)]
Block FOR SHARE/UPDATE for queries involving joins
Per report from Shaun Thomas, we don't yet support row locking when query has a
join between tables. While it may sometimes give an error, worse it may
silently lock wrong rows leading to application logic failures. The feature is
currently blocked until we have bandwidth to diagnose further and come up with
a proper fix.
Also update reqression tests to include offending tests and update expected
output now that such queries throw errors
Pallavi Sontakke [Mon, 11 Jul 2016 09:48:14 +0000 (15:18 +0530)]
Correct expected behaior of test.
Test reproduces Issue #84 on crash recovery
and prepared transactions.
Pavan Deolasee [Mon, 11 Jul 2016 08:29:50 +0000 (13:59 +0530)]
Change several asserts checking for aggregate context to errors
This should address the crash in assert-enabled build reported by Pallavi
Sontakke. SQLSmith tries to call various functions from system catalogs and
functions should be prepared to handle such calls.
Pavan Deolasee [Fri, 8 Jul 2016 05:29:53 +0000 (10:59 +0530)]
Add a test case demonstrating an extremely slow join in XL, especially with the
inner side of a join doing repeated remote subquery scans
Pavan Deolasee [Thu, 7 Jul 2016 11:26:20 +0000 (16:56 +0530)]
Never ever use an invalid XID, if we fail to connect to the GTM
The code before this commit would happily proceed further if GTM becomes dead
or unreachable. This may result in random problems since rest of the code is
not prepared to deal with that situation (as seen from the crash in TAP tests).
It seems far safer to just throw an error in such case.
TAP test and report by Pallavi Sontakke
Pavan Deolasee [Wed, 6 Jul 2016 18:14:05 +0000 (23:44 +0530)]
Use GTM_Sequence type to hold value of a sequence on GTM
We were incorrectly using "int" at couple of places which is not wide enough to
store 64-bit sequence values.
Per report by Helmi Ahmad
Pavan Deolasee [Wed, 6 Jul 2016 10:21:44 +0000 (15:51 +0530)]
Return pointer to the buffer used to store various fields values, so that
caller can free up the memory when done with it.
This fixes a memory like while running ALTER TABLE DISTRIBUTE BY
Pavan Deolasee [Wed, 6 Jul 2016 10:20:21 +0000 (15:50 +0530)]
Add a missing parenthesis, lack of which might throw surprises
Pavan Deolasee [Wed, 6 Jul 2016 09:46:47 +0000 (15:16 +0530)]
Don't wait indefinitely while trying to abort a transaction on the remote node.
Treat this more as a work-around until we investigate the reasons for remote
nodes not honouring query cancellation for some complicated queries, requiring
nested remote subquery plans
Pavan Deolasee [Tue, 21 Jun 2016 12:56:34 +0000 (18:26 +0530)]
Avoid pushing down evaluation of VALUES clause to a datanode for replicated
tables, unless it contains volatile function(s)
Pavan Deolasee [Tue, 21 Jun 2016 08:06:49 +0000 (13:36 +0530)]
Warn about missing relations only if they are not views since views are not
created on datanodes anyways
This relates to the earlier commit
Pavan Deolasee [Tue, 21 Jun 2016 05:47:23 +0000 (11:17 +0530)]
Add a warning when a node fails to find OID for the given relation.
Regression shows a bunch of warnings which should be fixed over due course
Pavan Deolasee [Mon, 20 Jun 2016 12:10:50 +0000 (17:40 +0530)]
Handle ON COMMIT properly on the datanodes by not looking at
MyXactAccessedTempRel which is set up differently in XL
We can't rely on MyXactAccessedTempRel because it gets set only when local
buffers are used for a relation. In XL, even temp tables use shared buffers
when used in a global session. Skipping checking for this local flag won't be
too bad from performance perspective.
Pallavi Sontakke [Mon, 20 Jun 2016 11:53:31 +0000 (17:23 +0530)]
Add TAP test for crash recovery Issue #84
Test crash recovery when prepared transactions are being created in
the background. Tests #84.
Pallavi Sontakke [Fri, 17 Jun 2016 09:09:21 +0000 (14:39 +0530)]
Add test for complex-update issue #38
Pallavi Sontakke [Thu, 16 Jun 2016 12:12:03 +0000 (17:42 +0530)]
Separate out INSENSITIVE cursor Issue ( #34)
Move issue in xl_known_bugs to track it separately.
Pallavi Sontakke [Thu, 16 Jun 2016 08:53:47 +0000 (14:23 +0530)]
Separate out LATERAL Issue #73 into xl_known_bugs
Pallavi Sontakke [Wed, 15 Jun 2016 10:03:49 +0000 (15:33 +0530)]
Correct expected output for a test
Modify expected output for 'ON COMMIT DELETE ROWS' clause.
Pavan Deolasee [Tue, 14 Jun 2016 08:38:58 +0000 (14:08 +0530)]
Remove an unintentional "set -x" command slipped in the previous commit
Pavan Deolasee [Tue, 14 Jun 2016 06:22:13 +0000 (11:52 +0530)]
Ensure "init all" (and other init commands too) does not remove existing data
directories unless "force" option is used
We'd tried to fix this earlier, but looks like double quote is not getting
passed to the shell correctly. Instead use a single quote.
Report by Pallavi Sontakke during QA testing.
Pavan Deolasee [Fri, 10 Jun 2016 13:09:05 +0000 (18:39 +0530)]
Show originating coordinator name:pid and remote node name:pid in the ps output
while running REMOTE SUBPLAN
This should help administrator to quickly find the originating session and
remote session, which can be immensely useful for debugging
Pavan Deolasee [Wed, 25 May 2016 13:36:51 +0000 (19:06 +0530)]
Do not reset stats on the coordinator upon create of a new index or cluster.
The stats on the coordinator has no meaning for distributed tables unless
they are built using remote stats. Also make sure coordinator's view of
updated/deleted/inserted tuples is executed when fast query shipping is used
Pavan Deolasee [Mon, 23 May 2016 10:05:11 +0000 (15:35 +0530)]
Log more information about connection error for ease in debugging
Pavan Deolasee [Thu, 12 May 2016 08:14:27 +0000 (13:44 +0530)]
Revert "It may happen that we try to read the status of a transaction"
This reverts commit
d3356cd451664f3585706f0ae817e0037814ec6e.
Other bug fixes in this area has now fixed the underlying problem and hence we
don't need this change.
Pavan Deolasee [Thu, 12 May 2016 08:12:20 +0000 (13:42 +0530)]
Update release notes for XL release r1.1
Pavan Deolasee [Tue, 10 May 2016 05:18:15 +0000 (10:48 +0530)]
Initialise a variable as reported by valgrind
Pavan Deolasee [Mon, 9 May 2016 08:39:21 +0000 (14:09 +0530)]
Add a mechanism to selectively refresh pooler information when only connection
options, such as hostname/port changes for a node
This allows us to retain connections to all other nodes in the cluster and just
recreate connections to the node whose connection information is changed. This
will be especially handy while dealing with datanode/coordinator failover
Pavan Deolasee [Mon, 9 May 2016 05:20:32 +0000 (10:50 +0530)]
Remove some references to person names from the docs
Pavan Deolasee [Mon, 9 May 2016 05:11:49 +0000 (10:41 +0530)]
Avoid protocol breakage when pooler fails to open connection to one or more
nodes.
While the pooler sends both fds as well pids, the client was bailing out early
if it can't find required number of fds, thus causing protocol breakdown
Per report by Zhang Eamon
Pavan Deolasee [Sun, 8 May 2016 09:14:41 +0000 (14:44 +0530)]
Properly deallocate prepared statements on the remote node when user makes such
request
Per report by Vamshi Reddy
Pavan Deolasee [Fri, 6 May 2016 12:36:37 +0000 (18:06 +0530)]
Fix a memory leak in GTM proxy
When two lists are concatnated, we might leak header of the second list since
only the list cells are concatnated. We must be careful not to free the list if
list_concat returned the to-be-concatnated list as-is.
Pavan Deolasee [Thu, 5 May 2016 10:02:08 +0000 (15:32 +0530)]
Honour shared queue refcount while deciding to remove it from hash table when
producer unbinds
It's possible that another execution of the portal may start just while we are
unbinding. Hence premature removal of the shared queue should be avoided.
Pavan Deolasee [Thu, 5 May 2016 09:55:39 +0000 (15:25 +0530)]
Make minimum values of shared_queues and shared_queue_size GUC parameters
dependent on other settings
shared_queue_size is dependent on the number of datanodes in the cluster since
each datanode may attach itself as a consumer of the shared queue. So the
shared_queue_size now signifies per-datanode value and the actual value used
will be (max_datanodes * shared_queue_size). Existing users should modify their
settings after taking this into consideration.
Similarly, shared_queues highly depends on the number of concurrent queries. We
now conservatively set this to at least 1/4th of max_connections or user
specified value, whichever is higher.
Pavan Deolasee [Thu, 5 May 2016 05:32:04 +0000 (11:02 +0530)]
Add a ref count mechanism to deal with situations where a Shared Queue is
acquired but never bound by any of the node, thus causing leakage
To be honest, this area requires further work. The way things are currently
setup, producer and consumers all bind to a shared queue, but only producer
eventually unbinds. The implementation has logic to wait out for consumers
before destroying a shared queue. While this is okay, a more defined entry and
exit points are required for producer and consumers.
The code also today relies on timeouts to handle the case where a consumer
never binds to a shared queue, thus causing large delays. These delays are more
prominent for very short queries.
Pavan Deolasee [Thu, 5 May 2016 03:48:34 +0000 (09:18 +0530)]
Correct shared memory size calculation for Shared Queue hashtable.
Pavan Deolasee [Wed, 4 May 2016 18:36:26 +0000 (00:06 +0530)]
Extend CLog, Subtrans log and CommitTsLog appropriately when an XID is received
from a remote node
Pavan Deolasee [Wed, 4 May 2016 12:17:02 +0000 (17:47 +0530)]
Fix a nasty bug that was zeroing out clog and subtrans pages, thus causing
various sorts of data corruptions.
The bug dates back to the XC days, but probably became prominent in XL because
of certain recent changes. In XC/XL, a node may not see all the XIDs and hence
clog/subtrans log must be extended whenever a new XID crosses the previously
seen page boundary. We do this by comparing the pageno where the new XID maps
with the latest_page_no as stored in the shared SLRU data structure. But to
handle XID wrap-arounds, we added a check for difference in number of pages to
be less than CLOG_WRAP_CHECK_DELTA, which was incorrectly defined as
(2^30 / CLOG_XACTS_PER_PAGE). Note that "^" is a logical XOR operator in C and
hence this was returned a very small number of 28, thus causing incorrect
zeroing of pages if ExtendCLOG is called with an XID which is older than what
28 clog pages can hold. All such transactions would suddenly be marked as
aborted, resulting in removal of perfectly valid tuples.
This patch fixes the mess by just relying on built-in routines for checking
XID wrap-arounds.
I also found another issue while working on this. We must not only zero the
page at hand, but also all intermediate pages because we won't this opportunity
later if an intermediate XID is seen.
In our test setup, this seems to help some of the recent reports of data
corruption, including "missing attributes" errors.
Mason Sharp [Mon, 2 May 2016 18:44:53 +0000 (14:44 -0400)]
It may happen that we try to read the status of a transaction
in clog before the page has been committed.
There are places in the code that try to extend clog,
but here we simply just do one retry if it looks like
we failed to read the desired page.
Pavan Deolasee [Fri, 15 Apr 2016 04:40:35 +0000 (10:10 +0530)]
Update release notes and also correct product name to Postgres-XL 9.5r1
Pavan Deolasee [Thu, 14 Apr 2016 09:19:35 +0000 (14:49 +0530)]
Fix yet another memory leak in the shared queue producer path.
Pavan Deolasee [Thu, 14 Apr 2016 09:00:05 +0000 (14:30 +0530)]
Fix another memory leak in executor.
Pavan Deolasee [Thu, 14 Apr 2016 07:15:18 +0000 (12:45 +0530)]
Plug a memory leak that might help OOM situations in ALTER TABLE .. ADD NODE
case
Report by Florian Iragne
Pallavi Sontakke [Wed, 13 Apr 2016 09:36:51 +0000 (15:06 +0530)]
Test no more uses 'start' command for gtm slave
'pgxc_ctl start' command is no more needed to start
gtm slave, with recent code changes.
Pavan Deolasee [Wed, 13 Apr 2016 06:29:56 +0000 (11:59 +0530)]
Don't use special marker "none" while updating max_wal_senders in
postgresql.conf via pgxc_ctl.
Instead use "0" if the variable is not set or set to "none"
Pallavi Sontakke [Wed, 13 Apr 2016 05:38:46 +0000 (11:08 +0530)]
Make 'help add' more explanatory
Help user to supply 'slave_name' in
'pgxc_ctl add gtm slave', different from others
where original node name is expected.
Fixes #85
Pavan Deolasee [Tue, 12 Apr 2016 15:43:22 +0000 (21:13 +0530)]
Avoid removing directories for some pgxc_ctl calls, just as an added protection
if user makes a mistake
Pavan Deolasee [Tue, 12 Apr 2016 12:53:52 +0000 (18:23 +0530)]
Check for 'status' and not return value of waitpid() function
Pavan Deolasee [Tue, 12 Apr 2016 11:03:51 +0000 (16:33 +0530)]
Suppress the message hinting to start coordinator/datanode/gtm server at the
end of initdb/initgtm when the commands are run via pgxc_ctl
This can be confusing to the user. We use an environment varibale
PGXC_CTL_SILENT to silence the message instead of adding a new option.
Pavan Deolasee [Tue, 12 Apr 2016 10:45:49 +0000 (16:15 +0530)]
Add check against accidental start of GTM with an XID lower than what it's
saved in its control file.
User must now explicitly specify -f option to forcefully start GTM with the
given value. This should protect users from incorrect usage of the -x option
(like we saw in a recent bug report)
Pavan Deolasee [Tue, 12 Apr 2016 10:12:04 +0000 (15:42 +0530)]
Fix a typo in the log message during datanode failover
Pavan Deolasee [Tue, 12 Apr 2016 10:09:46 +0000 (15:39 +0530)]
Reduce log level for a message during initdb
Pavan Deolasee [Mon, 11 Apr 2016 05:49:06 +0000 (11:19 +0530)]
Add an alternate expected file for aggregates test on sunos
Patch by Patrick Sodré
Pavan Deolasee [Mon, 11 Apr 2016 05:14:59 +0000 (10:44 +0530)]
Make changes and bug fixes to let compilation and regression run on smartos
We don't yet officially support the platform, given very little testing done so
far on this platform. But we don't stop others to doing it either. So
committing these changes upstream.
Reports, investigation and patches by Patrick Sodré.
Pavan Deolasee [Sun, 10 Apr 2016 04:46:27 +0000 (10:16 +0530)]
Do not add a spurious ';' when not cleaning WAL directory for a datanode
Pallavi Sontakke [Thu, 7 Apr 2016 10:35:09 +0000 (16:05 +0530)]
Test: Change command to start GTM standby.
Use temporary PGXC_CTL_HOME for test.
Pallavi Sontakke [Wed, 6 Apr 2016 06:43:43 +0000 (12:13 +0530)]
Add test for GTM standby
Pallavi Sontakke [Fri, 1 Apr 2016 11:28:38 +0000 (16:58 +0530)]
Modify tests
Remove cluster-cleanup at start.
Extract PGXC_CTL_HOME from ENV.
Pavan Deolasee [Fri, 1 Apr 2016 06:26:57 +0000 (11:56 +0530)]
Extend the array for various slave variables to match the size of the master
array.
This fixes the problem when a slave for only one master datanode or coordinator
is added, as demonstrated by the tap tests
Pavan Deolasee [Fri, 1 Apr 2016 06:25:43 +0000 (11:55 +0530)]
extendVar should only reset val_used only when newSize is greater than the
current value of val_used
Pavan Deolasee [Fri, 1 Apr 2016 06:24:59 +0000 (11:54 +0530)]
Accept -m option to pgxc_ctl, but let "stop" command handle the rest
Pavan Deolasee [Thu, 31 Mar 2016 14:18:22 +0000 (19:48 +0530)]
Correct a comment added to pgxc_ctl.conf upon coordinator master addition
Pallavi Sontakke [Wed, 30 Mar 2016 07:04:11 +0000 (12:34 +0530)]
Add test for pgxc_ctl minimal config
Add some more cleanup to TAP tests.
Pavan Deolasee [Tue, 29 Mar 2016 09:22:58 +0000 (14:52 +0530)]
Avoid pre-mature line truncation in the auto generated INSTALL file
Pavan Deolasee [Tue, 29 Mar 2016 07:16:20 +0000 (12:46 +0530)]
Improve draft release notes for upcoming beta2 release
Pavan Deolasee [Tue, 29 Mar 2016 07:12:39 +0000 (12:42 +0530)]
In the installation guide, use datanode names that are consistent with what we
use in regression tests, for sanity.
Pavan Deolasee [Tue, 29 Mar 2016 07:00:44 +0000 (12:30 +0530)]
Add missing steps to create information about the coordinator node on the
datanodes in installation guide
Pavan Deolasee [Mon, 28 Mar 2016 12:35:47 +0000 (18:05 +0530)]
Draft release notes which includes bug fixes and improvements since r1beta1 release
Pallavi Sontakke [Mon, 28 Mar 2016 13:13:41 +0000 (18:43 +0530)]
Add TAP test for pgxc_ctl
Test add/remove nodes and replicas
Pavan Deolasee [Mon, 28 Mar 2016 12:09:28 +0000 (17:39 +0530)]
Correct URL to Postgres-XL online release notes
Pavan Deolasee [Mon, 28 Mar 2016 12:04:24 +0000 (17:34 +0530)]
Remove a reference to sourceforge project page now that we don't use it anymore
Pavan Deolasee [Mon, 28 Mar 2016 12:04:04 +0000 (17:34 +0530)]
Correct Copyright years
Pavan Deolasee [Mon, 28 Mar 2016 11:46:33 +0000 (17:16 +0530)]
Correctly use Postgres-XL instead of PostgreSQL for reporting "make" status
Pavan Deolasee [Mon, 28 Mar 2016 11:34:53 +0000 (17:04 +0530)]
Correctly specify HASH_BLOBS while using nodeOid as a key for pooler hash
tables.
Without this, we were incorrectly using the default string copy/compare
functions, thus later breaking things.
Pavan Deolasee [Mon, 28 Mar 2016 08:29:04 +0000 (13:59 +0530)]
Use a non-zero default value for max_wal_senders on coordinator and datanode
master
Pavan Deolasee [Fri, 25 Mar 2016 11:38:50 +0000 (17:08 +0530)]
pqsignal.c now comes from src/port and that must be used to create a symlink
while building initgtm.
Pavan Deolasee [Fri, 25 Mar 2016 11:23:31 +0000 (16:53 +0530)]
Do not turn hot_standby in coordinator/datanode slaves since its not supported.
We'd earlier turned that on so that PQping() can check status of standbys. But
that clearly creates bigger trouble and standbys may just stop working. So add
a new mechanism to ping slave nodes by using pg_ctl
Pavan Deolasee [Tue, 22 Mar 2016 07:52:41 +0000 (13:22 +0530)]
Check if gtm/gtm_proxy directory has a .pid file before trying to stop the
server.
Before starting or initialising a new GTM/GTM proxy, we first try to stop
running server. But if server is not running, which is the case most often, it
will show an error This avoids those unnecessary error messages
Pavan Deolasee [Tue, 22 Mar 2016 07:06:19 +0000 (12:36 +0530)]
Correct example in the tutorial.
We don't support SRF in VALUES clause. They must be used via subqueries.
Report by Ernst-Georg Schmid
Pavan Deolasee [Tue, 15 Mar 2016 13:28:32 +0000 (18:58 +0530)]
Remove an obselete file
Pavan Deolasee [Tue, 15 Mar 2016 13:15:21 +0000 (18:45 +0530)]
Rename RelationLocInfo->nodeList to RelationLocInfo->rl_nodeList to avoid using
such a common name for a very important structure member
Pavan Deolasee [Tue, 15 Mar 2016 06:30:52 +0000 (12:00 +0530)]
Re-add incorrectly removed call to consume txn_count during compiler warning
cleanups
Pavan Deolasee [Tue, 15 Mar 2016 03:09:58 +0000 (08:39 +0530)]
Add support for json_agg() pushdown
This patch adds a collection function for json_agg() aggregate. Also use a
specific json_agg_state type for the internal agg state so that corresponding
in/out functions can be specified for transition values to be passed around
from one node to another
Andrew Dunstan [Fri, 18 Sep 2015 18:39:39 +0000 (14:39 -0400)]
Cache argument type information in json(b) aggregate functions.
These functions have been looking up type info for every row they
process. Instead of doing that we only look them up the first time
through and stash the information in the aggregate state object.
Affects json_agg, json_object_agg, jsonb_agg and jsonb_object_agg.
There is plenty more work to do in making these more efficient,
especially the jsonb functions, but this is a virtually cost free
improvement that can be done right away.
Backpatch to 9.5 where the jsonb variants were introduced.
Pavan Deolasee [Mon, 14 Mar 2016 11:43:26 +0000 (17:13 +0530)]
Fix a compiler warning about mixing of code and declarations
Pavan Deolasee [Mon, 14 Mar 2016 11:38:05 +0000 (17:08 +0530)]
Aggregates with ORDER BY clause cannot be shipped to the datanode.
A query such as "SELECT sum(x ORDER BY x) FROM tab" must not be shipped to the
remote side since the transition function must receive tuples in the specified
order. While it does not make much sense in this example, there could be other
aggregares, such as json_agg, where ordering could matter
Pavan Deolasee [Fri, 11 Mar 2016 08:48:50 +0000 (14:18 +0530)]
Fix several compiler warnings
Pavan Deolasee [Fri, 11 Mar 2016 06:44:07 +0000 (12:14 +0530)]
Do not compare unsigned integer for "< 0"
Pavan Deolasee [Fri, 11 Mar 2016 06:43:10 +0000 (12:13 +0530)]
Explicitly cast pthread_t to int for logging purposes
Tomas Vondra [Tue, 1 Mar 2016 03:45:56 +0000 (04:45 +0100)]
fix missing prototypes (and 'implicit declaration' warning)
Tomas Vondra [Tue, 1 Mar 2016 03:26:17 +0000 (04:26 +0100)]
remove functions that are not used (or defined)
Tomas Vondra [Tue, 1 Mar 2016 03:11:38 +0000 (04:11 +0100)]
add missing declarations of timeval/rusage structs
Tomas Vondra [Tue, 1 Mar 2016 03:05:53 +0000 (04:05 +0100)]
fix declarations that discard 'const' modifier from pointers
Tomas Vondra [Tue, 1 Mar 2016 02:48:06 +0000 (03:48 +0100)]
get rid of GTMGetFirstClientIdentifier (unused)
function not used or even defined in a header file
Tomas Vondra [Tue, 1 Mar 2016 02:36:41 +0000 (03:36 +0100)]
fix a few violations of ISO C90 (mixed code/declarations)
Interestingly ';;' confuses the compiler enough to emit this warning.