postgres-xl.git
9 years agoRemove an obselete file
Pavan Deolasee [Tue, 15 Mar 2016 13:28:32 +0000 (18:58 +0530)]
Remove an obselete file

9 years agoRename RelationLocInfo->nodeList to RelationLocInfo->rl_nodeList to avoid using
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

9 years agoRe-add incorrectly removed call to consume txn_count during compiler warning
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

9 years agoAdd support for json_agg() pushdown
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

9 years agoFix a compiler warning about mixing of code and declarations
Pavan Deolasee [Mon, 14 Mar 2016 11:43:26 +0000 (17:13 +0530)]
Fix a compiler warning about mixing of code and declarations

9 years agoAggregates with ORDER BY clause cannot be shipped to the datanode.
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

9 years agoFix several compiler warnings
Pavan Deolasee [Fri, 11 Mar 2016 08:48:50 +0000 (14:18 +0530)]
Fix several compiler warnings

9 years agoDo not compare unsigned integer for "< 0"
Pavan Deolasee [Fri, 11 Mar 2016 06:44:07 +0000 (12:14 +0530)]
Do not compare unsigned integer for "< 0"

9 years agoExplicitly cast pthread_t to int for logging purposes
Pavan Deolasee [Fri, 11 Mar 2016 06:43:10 +0000 (12:13 +0530)]
Explicitly cast pthread_t to int for logging purposes

9 years agofix missing prototypes (and 'implicit declaration' warning)
Tomas Vondra [Tue, 1 Mar 2016 03:45:56 +0000 (04:45 +0100)]
fix missing prototypes (and 'implicit declaration' warning)

9 years agoremove functions that are not used (or defined)
Tomas Vondra [Tue, 1 Mar 2016 03:26:17 +0000 (04:26 +0100)]
remove functions that are not used (or defined)

9 years agoadd missing declarations of timeval/rusage structs
Tomas Vondra [Tue, 1 Mar 2016 03:11:38 +0000 (04:11 +0100)]
add missing declarations of timeval/rusage structs

9 years agofix declarations that discard 'const' modifier from pointers
Tomas Vondra [Tue, 1 Mar 2016 03:05:53 +0000 (04:05 +0100)]
fix declarations that discard 'const' modifier from pointers

9 years agoget rid of GTMGetFirstClientIdentifier (unused)
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

9 years agofix a few violations of ISO C90 (mixed code/declarations)
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.

9 years agoeliminate variables that are not used at all
Tomas Vondra [Tue, 1 Mar 2016 02:29:42 +0000 (03:29 +0100)]
eliminate variables that are not used at all

9 years agoeliminate variables that are only set (but not used)
Tomas Vondra [Tue, 1 Mar 2016 02:23:41 +0000 (03:23 +0100)]
eliminate variables that are only set (but not used)

9 years agofix missing ExceptionalCondition prototype / return type
Tomas Vondra [Tue, 1 Mar 2016 02:03:59 +0000 (03:03 +0100)]
fix missing ExceptionalCondition prototype / return type

During compilation, there's like a zillion warnings about missing
prototype of ExceptionalCondition. Of course, in regular postgres
this is defined in postgres.h like this:

    void ExceptionalCondition(...)

but in XL apparently some places use Assert it without willing to
include the whole postgres.h (not sure why). So there's a copy of
the function in src/gtm/common/assert.c, but there's no prototype
in src/include/gtm/assert.h, thus the complaints.

Adding the prototype to the header file however reveals another
problem, as the function in src/gtm/common/assert.c is defined
like this

    int ExceptionalCondition(...)

with a rather wonky explanation about TrapMacro(). So this would
fail to compile when a file ends up g both header files, like for
example src/gtm/client/gtm_client.c. (Fun fact: gtm_client.c does
not really need the include at all.)

Therefore the best solution at this point seems to be to simply
change the return type in assert.c to void (and get rid of the
rather suspicious explanation above the function), and add the
prototype into src/include/gtm/assert.c. This way the prototype
matches the one from postgres.h, there's no conflict and the
warnings disappear.

In the long term however, the right solution seems to be simply
removing the redundancy by dropping the gtm copy of the function.

9 years agoAdd support for pushdown of Append and MergeAppend nodes.
Pavan Deolasee [Thu, 10 Mar 2016 11:13:32 +0000 (16:43 +0530)]
Add support for pushdown of Append and MergeAppend nodes.

While dealing with Append and MergeAppend pathnodes, we shouldn't be looking at
the Varno in the "distribution" information because each append subpath comes
from a different relation. So we devise a mechanism to compare distribution
strategies without comparing the Varnos.

Expected outputs of many test cases is also updated because Append and
MergeAppend plans are now pushed down to the datanodes when possible.

"misc" test case exhibited certain failures because of incorrect evaluation of
a "volatile" function on the datanode. This turned out to be an old bug which
should be fixed separately. There were existing failures, masked by incorrect
acceptance of the test output. All such sqls are now disabled from "misc" and
copied to xl_known_bugs. Once the bug related to the volatile functions is
fixed, we would enable those sqls again

9 years agoSend down SYNC message to a failed remote session that was running extended
Pavan Deolasee [Wed, 9 Mar 2016 12:18:23 +0000 (17:48 +0530)]
Send down SYNC message to a failed remote session that was running extended
query protocol.

While running extended query protocol, a backend that has thrown an error will
keep ignoring all messages until it sees a SYNC message. We now carefully track
the messages that we are sending to the remote node and remember if we must
send a SYNC message even before sending a ROLLBACK command.

While the regression was running fine even without this patch, this issue was
noticed as part of some other work and hence fixed

9 years agoSet log_line_prefix for regression run to collect more information by default
Pavan Deolasee [Wed, 9 Mar 2016 11:34:43 +0000 (17:04 +0530)]
Set log_line_prefix for regression run to collect more information by default

9 years agoAdd test cases to enable/disable certain modules using the new logging
Pavan Deolasee [Wed, 9 Mar 2016 11:32:50 +0000 (17:02 +0530)]
Add test cases to enable/disable certain modules using the new logging
infrastructure

They are not added to either serial or parallel schedules and just serve as
examples right now

9 years agoAdd support for process-level control for overriding log levels.
Pavan Deolasee [Fri, 4 Mar 2016 06:51:18 +0000 (12:21 +0530)]
Add support for process-level control for overriding log levels.

This patch changes the behaviour of pg_msgmodule_set/change() functions. These
functions now only change the log levels for various messages, but the actual
logging won't start until one of the following enable() function is called.

This patch adds a few more functions:

- pg_msgmodule_enable(pid) - the given pid will start logging as per the
  current settings for various msgs.

- pg_msgmodule_disable(pid) - the given pid will stop logging and use the
  compile time settings

- pg_msgmodule_enable_all(persistent) - all current processes will start
  logging as per the current setting. If "persistent" is set to true then all
  new processes will also log as per the setting

- pg_msgmodule_disable_all() - all current and future processes will stop
  logging and only use compile time settings.

9 years agoHonour client's request for binary data transfer.
Pavan Deolasee [Thu, 3 Mar 2016 11:40:41 +0000 (17:10 +0530)]
Honour client's request for binary data transfer.

When coordinator gets data from the datanode, it always gets it in TEXT mode.
But if the client has requested binary transfer of the data, then it must not
forward the data received from the datanode as it is. Rather it must send each
column in the desired format.

While this should fix the JDBC or libpq issue with binary data transfer, we
should really see if the coordinator to datanode communication can also use
binary mode for performance reason. But thats a separate patch.

9 years agoAvoid repeated palloc for query strings while handling multi-statement SQLs
Pavan Deolasee [Thu, 3 Mar 2016 09:31:06 +0000 (15:01 +0530)]
Avoid repeated palloc for query strings while handling multi-statement SQLs

We now only pass pointers until we have the complete query string. At that
point, we only required bytes and copy the query string

9 years agoCollect and return query substrings corresponding to each SQL statement
Pavan Deolasee [Thu, 3 Mar 2016 05:35:30 +0000 (11:05 +0530)]
Collect and return query substrings corresponding to each SQL statement
while parsing a multi-statement query separated by ';'

raw_parser() returns a list of parsetrees after parsing a multi-statement SQL
query, where each parsetree corresponds to one SQL statement. It does not have
any mechanism to return the source text of the SQL statement. In Postgres-XL,
we send out the query text as it is to remote datanodes and coordinators while
dealing with utility statements. Not having access to individual SQL statement
is a problem because we end up sending the same text again and again, leading
to various issues.

This patch adds some rudimentary mechanism to return a list of query strings
along with the list of parsetress.

9 years agoEnable 'random' test case to match with the parallel_schedule
Pavan Deolasee [Thu, 3 Mar 2016 04:06:11 +0000 (09:36 +0530)]
Enable 'random' test case to match with the parallel_schedule

9 years agoSave global_xmin in the GTM control file and use that when its restarted
Pavan Deolasee [Wed, 2 Mar 2016 06:18:30 +0000 (11:48 +0530)]
Save global_xmin in the GTM control file and use that when its restarted

The control file now also have a version identifier so that we can read and
interpret older versions while keeping flexibility to change the format

9 years agoInclude the string terminator in GID size calculation
Pavan Deolasee [Tue, 1 Mar 2016 13:27:23 +0000 (18:57 +0530)]
Include the string terminator in GID size calculation

9 years agoReport state to the GTM no more frequently than defined by
Pavan Deolasee [Tue, 1 Mar 2016 11:53:05 +0000 (17:23 +0530)]
Report state to the GTM no more frequently than defined by
CLUSTER_MONITOR_NAPTIME

Otherwise we have danger of flooding the GTM with messages in an infinite loop,
if the GTM is reporting back errors

9 years agoUse -P preprocessor option to avoid to inhibit generation of linemarkers in the
Pavan Deolasee [Tue, 1 Mar 2016 10:16:02 +0000 (15:46 +0530)]
Use -P preprocessor option to avoid to inhibit generation of linemarkers in the
output from the preprocessor

This ensures that grepping for the elog messages works correctly on various
compilers (tested for gcc and clang)

9 years agoFix bugs around handling of params passed to the datanodes.
Pavan Deolasee [Tue, 1 Mar 2016 05:57:20 +0000 (11:27 +0530)]
Fix bugs around handling of params passed to the datanodes.

This fixes problems reported in plpgsql function calls since
fast-query-shipping was added. But fixing the problem also highlighted other
bugs in the protocol handling. For example, we would set a datanode connection
state to be IDLE upon receiving a CommandComplete. But for simple query
protocol, we should really be waiting for ReadyForQuery before changing the
state. This patch has related fixes.

plpgsql test case's expected output is also fixed now that the underlying bug
has been take care of

9 years agoFix docs and Makefile so that "make dist" works correctly
Pavan Deolasee [Fri, 19 Feb 2016 10:45:48 +0000 (16:15 +0530)]
Fix docs and Makefile so that "make dist" works correctly

9 years agoHandle case correctly when collection function is not defined.
Pavan Deolasee [Fri, 19 Feb 2016 09:50:31 +0000 (15:20 +0530)]
Handle case correctly when collection function is not defined.

Also, make sure some other missed out responses are handled correctly during
receiving responses

9 years agoCorrect stale links in the README file XL9_5_R1BETA1
Pavan Deolasee [Thu, 18 Feb 2016 15:47:22 +0000 (21:17 +0530)]
Correct stale links in the README file

9 years agoUpdate release notes
Pavan Deolasee [Thu, 18 Feb 2016 14:22:33 +0000 (19:52 +0530)]
Update release notes

9 years agoStamp Postgres-XL 9.5r1beta1
Pavan Deolasee [Thu, 18 Feb 2016 12:19:40 +0000 (17:49 +0530)]
Stamp Postgres-XL 9.5r1beta1

9 years agoMake some adjustments to the way documentation headers are printed
Pavan Deolasee [Thu, 18 Feb 2016 12:19:09 +0000 (17:49 +0530)]
Make some adjustments to the way documentation headers are printed

9 years agoInstall docs under "doc" directory instead of "doc-xc"
Pavan Deolasee [Thu, 18 Feb 2016 11:56:49 +0000 (17:26 +0530)]
Install docs under "doc" directory instead of "doc-xc"

9 years agoRemove some leftover merge-conflicts markers
Pavan Deolasee [Thu, 18 Feb 2016 10:20:10 +0000 (15:50 +0530)]
Remove some leftover merge-conflicts markers

9 years agoIncrease the timeout for waiting to end query to 1s from existing 20ms.
Pavan Deolasee [Thu, 18 Feb 2016 10:13:35 +0000 (15:43 +0530)]
Increase the timeout for waiting to end query to 1s from existing 20ms.

We see that this timeout expires sometime on a loaded machine, leading to other
errors. We need to handle that situation better, but for now increase the
timeout to 1s to reduce the chances of this happening.

9 years agoThere was a missing commit from when the repo was forked,
Mason Sharp [Thu, 18 Feb 2016 07:40:55 +0000 (23:40 -0800)]
There was a missing commit from when the repo was forked,
applying to the new repo.

Original commit from the sourceforge repo:

    commit e61639b864e83b6b45d11b737ec3c3d67aeb4b56
    Author: Mason Sharp <[email protected]>
    Date:   Sun Jul 26 17:54:08 2015 -0700

        Changed license from the Mozilla Public License
        to the PostgreSQL License

9 years agoFix a few compiler warnings.
Pavan Deolasee [Wed, 17 Feb 2016 12:37:21 +0000 (18:07 +0530)]
Fix a few compiler warnings.

9 years agoRemove known bugs' tests from schedule.
Pallavi Sontakke [Wed, 17 Feb 2016 10:58:08 +0000 (16:28 +0530)]
Remove known bugs' tests from schedule.

9 years agoHandle a race condition between portal close 'C' message and new request for
Pavan Deolasee [Wed, 17 Feb 2016 07:28:31 +0000 (12:58 +0530)]
Handle a race condition between portal close 'C' message and new request for
running the portal, as part of the next step of query execution

A producer will unbind and remove the SharedQ once all consumers are done
with reading pending data. It does not wait for consumers to actually send
close 'C' message. If the next step of the execution now recreates the SharedQ
with the same name (because its the same RemoteSubplan being re-executed), and
if the close messages arrives after that, but before the new producer gets
chance to bind to the SharedQ, we will end up marking future consumers of the
new SharedQ as 'DONE'. The SharedQueueAcquire then incorrectly assumes that
this is a stale Q belonging to earlier execution and gets in an infinite wait.

Also do not try indefinitely for the old producer to unbind and remove a stale
queue. Any further bugs in this area will cause infinite loops. Instead try for
a fixed number of times and then let the query fail.

9 years agoGroup all uncategorised log messages to a default module-id (with number set to
Pavan Deolasee [Wed, 17 Feb 2016 04:52:05 +0000 (10:22 +0530)]
Group all uncategorised log messages to a default module-id (with number set to
255 right now)

9 years agoCorrect a typo
Pavan Deolasee [Wed, 17 Feb 2016 04:51:22 +0000 (10:21 +0530)]
Correct a typo

9 years agoAdd a missing value for "%s" placeholder in an elog message
Pavan Deolasee [Tue, 16 Feb 2016 18:34:41 +0000 (00:04 +0530)]
Add a missing value for "%s" placeholder in an elog message

9 years agoUse "expr" instead of "bc" for arithmetic since "bc" may not be available on
Pavan Deolasee [Mon, 15 Feb 2016 18:28:58 +0000 (23:58 +0530)]
Use "expr" instead of "bc" for arithmetic since "bc" may not be available on
all platforms

9 years agoFix build failure when configured with --with-openssl
Pavan Deolasee [Mon, 15 Feb 2016 18:23:22 +0000 (23:53 +0530)]
Fix build failure when configured with --with-openssl

9 years agoHandle errors while PREPARing a transaction gracefully.
Pavan Deolasee [Mon, 15 Feb 2016 12:56:13 +0000 (18:26 +0530)]
Handle errors while PREPARing a transaction gracefully.

If an error occurs after PREPARE TRANSACTION command is sent, we don't know if
the command is successful or not. So the coordinator will go ahead and abort
the transaction. But the node which failed to run PREPARE TRANSACTION may not
be even reachable on the coordinator. So we don't try to rollback transaction
on such nodes.

9 years agoMake sure to write to the GTM control file only after paths are set up
Pavan Deolasee [Mon, 15 Feb 2016 12:50:44 +0000 (18:20 +0530)]
Make sure to write to the GTM control file only after paths are set up
correctly

9 years agoExtend commit, subtrans and commit_ts logs appropriately when new xids are
Pavan Deolasee [Mon, 15 Feb 2016 10:47:11 +0000 (16:17 +0530)]
Extend commit, subtrans and commit_ts logs appropriately when new xids are
received from the GTM.

After our recent work on cluster monitor, GTM will now send back
latestCompletedXid and RecentGlobalXmin which we record in a shared memory
area. But if the node has not asked for XIDs for some time, the SLRU
maintaining these logs may fall much behind. So we must keep these log files
upto date with the XIDs generated by the GTM

This should also fix the spotting of the following log message as reported
by Mason Sharp

LOG: could not truncate directory "pg_subtrans": apparent wraparound

9 years agoCorrectly check for implicit 2PC.
Pavan Deolasee [Mon, 15 Feb 2016 09:52:53 +0000 (15:22 +0530)]
Correctly check for implicit 2PC.

Now we have far more information embedded in the GID string. So there is no
point looking for [0-9]+ pattern beyond the prefix. Just assume external tools
would never use that pattern (PREPARE TRANSACTION should anyway throw an error
if they try to use the pattern)

9 years agoGrep for all elog messages correctly post preprocessing
Pavan Deolasee [Fri, 12 Feb 2016 05:23:21 +0000 (10:53 +0530)]
Grep for all elog messages correctly post preprocessing

9 years agoTest sql and output changes for some contrib modules
Pallavi Sontakke [Mon, 15 Feb 2016 13:04:51 +0000 (18:34 +0530)]
Test sql and output changes for some contrib modules

Accept expected XL behavior. Add ORDER BY where needed.

9 years agoTest sql and output changes for LATERAL issue
Pallavi Sontakke [Fri, 12 Feb 2016 12:50:37 +0000 (18:20 +0530)]
Test sql and output changes for LATERAL issue

Separate out Issue #73 in Issue Tracker.
Accept XL query plans.

9 years agoFix a typo in the script, we should be looking for GNUmakefile and not
Pavan Deolasee [Thu, 11 Feb 2016 12:17:11 +0000 (17:47 +0530)]
Fix a typo in the script, we should be looking for GNUmakefile and not
GNUMakefile

9 years agoImprove the debugging infrastructure by adding mechanism to dynamically
Pavan Deolasee [Thu, 11 Feb 2016 10:31:14 +0000 (16:01 +0530)]
Improve the debugging infrastructure by adding mechanism to dynamically
increase/decrease log levels

This new pg_msgmodule_change() function can be used to increment or decrement
compile time defined log levels by the given step. Of course, this is only
applicable to DEBUG1-5 and LOG messages and the resulting new level is also
within the same range. This only affects whats gets logged on the server log
and not what gets sent to the client

9 years agoImprove node exclusion and node rejoining logic for calculation for global
Pavan Deolasee [Thu, 11 Feb 2016 07:58:11 +0000 (13:28 +0530)]
Improve node exclusion and node rejoining logic for calculation for global
xmin.

When a node rejoins the cluster, after disconnection or restart, the logic now
accounts for the fact that the node might be running with an older xmin. GTM
sends back appropriate error codes and recent state information so that the
node can make a decision to join the cluster or fail.

Also increase the threshold for delay in reporting to 10mins to avoid false
positives.

9 years agoImprove node registration and xmin reporting such that false log messages are
Pavan Deolasee [Wed, 10 Feb 2016 15:30:41 +0000 (21:00 +0530)]
Improve node registration and xmin reporting such that false log messages are
avoided at the GTM.

Also add some more debug messages to the GTM

9 years agoDo not log unnecessary node registration failures by differentiating between a
Pavan Deolasee [Wed, 10 Feb 2016 11:54:18 +0000 (17:24 +0530)]
Do not log unnecessary node registration failures by differentiating between a
node and session registration

9 years agoSome misc fixes and documentation updates for pgxc_ctl
Pavan Deolasee [Wed, 10 Feb 2016 10:14:00 +0000 (15:44 +0530)]
Some misc fixes and documentation updates for pgxc_ctl

9 years agoSprinkle SQueue and portal management code with DEBUG messages
Pavan Deolasee [Wed, 10 Feb 2016 04:48:38 +0000 (10:18 +0530)]
Sprinkle SQueue and portal management code with DEBUG messages

9 years agoTest sql and output changes for hstore
Pallavi Sontakke [Wed, 10 Feb 2016 07:05:27 +0000 (12:35 +0530)]
Test sql and output changes for hstore

Add order by clause for consistent test results from
json_agg() function

9 years agoAdjust log_line_prefix to log much more information about connections.
Pavan Deolasee [Tue, 9 Feb 2016 08:46:21 +0000 (14:16 +0530)]
Adjust log_line_prefix to log much more information about connections.

'R' - now reports information about remote end (type/name/pid) where type can
be 'C' for coordinator, 'D' for datanode, 'A' for application and 'U' for rest

'G' - now reports information about the originating coordinator (name/pid)

'S' - reports the global session identifier.

9 years agoLet many GUC parameters be user-settable, compatible with PG.
Pavan Deolasee [Mon, 8 Feb 2016 17:02:12 +0000 (22:32 +0530)]
Let many GUC parameters be user-settable, compatible with PG.

They were made SUSET to support multi-tenant environment, but no longer
applicable to the current use case of XL.

9 years agoSome improvements to debug/error logging.
Pavan Deolasee [Mon, 8 Feb 2016 12:04:27 +0000 (17:34 +0530)]
Some improvements to debug/error logging.

We now log name of the remote node and remote PID if an error is received on a
connection. Some more debugging messages added to the pooler code.

9 years agoTrack PID of the remote backend processes serving a particular connection.
Pavan Deolasee [Mon, 8 Feb 2016 09:57:40 +0000 (15:27 +0530)]
Track PID of the remote backend processes serving a particular connection.

This information is usally readily available in PGConn, but since we only pass
around socket descriptors between pooler and the coordinator (or datanode
backends), we pass this information back to the backends. This is at least very
useful for debugging purposes.

(This API definitely deserves some refactoring. In particular, I would like to
keep a copy of some other members of the PGConn structure in the
PGXCNodeHandle, but for now backend PID is what we care for).

9 years agoAdd support for overrding default log levels for specfic messages or all
Pavan Deolasee [Mon, 8 Feb 2016 06:17:40 +0000 (11:47 +0530)]
Add support for overrding default log levels for specfic messages or all
messages in a file or a module.

We now support a new --enable-genmsgids configure option. When compiled with
this, superusers can run pg_msgmodule_set(moduleid, fileid, msgid, newlevel)
command to override the log level specified in the source code.

There are many TODOs and limitations of this approach. We could only, for
example, increase logging level of messages i.e. turn DEBUG2 to DEBUG1 or DEBUG
to LOG. But we can't change ERROR to PANIC or supress a log message. Also, we
are using a very sparse representation of the message log levels. This
increases memory requirements significantly, though should speed up lookups and
keep the code simple.

When configured with --enable-genmsgids, a file named MSGMODULES is created at
the top of the build tree and the module-ids are later picked from that file
while compiling individual files. We would also preprocess each file before
compilation and save all elog() calls, along with the file_name, line_number,
messgae, module_id, file_id, msg_id in MSGIDS file. This file can then be used
to lookup the messages so that correct information is passed. This clearly
needs a lot more polishing and work.

When configued without --enable-genmsgids, we don't expect this facility to add
overhead because all codes gets #ifdef-ed out

9 years agoStandardize "subdir = <name>" in the Makefile(s)
Pavan Deolasee [Mon, 8 Feb 2016 05:36:30 +0000 (11:06 +0530)]
Standardize "subdir = <name>" in the Makefile(s)

9 years agoAdd a mechanism to start with an empty pgxc_ctl configuration file and build
Pavan Deolasee [Sun, 7 Feb 2016 12:55:01 +0000 (18:25 +0530)]
Add a mechanism to start with an empty pgxc_ctl configuration file and build
the cluster one at a time.

A new option "prepare config empty" is now supported which sets up an almost
empty conf file and all components, including GTM, can be added one at a time

9 years agoHandle MergeAppend node correctly while determing param types.
Pavan Deolasee [Thu, 4 Feb 2016 13:55:08 +0000 (14:55 +0100)]
Handle MergeAppend node correctly while determing param types.

Report by Krzysztof Nienartowicz, patch by me.

9 years agoIf we don't find GTM control file on startup, look for the temporary control
Pavan Deolasee [Thu, 4 Feb 2016 13:33:34 +0000 (14:33 +0100)]
If we don't find GTM control file on startup, look for the temporary control
file and use that.

While updating the control file, GTM first writes updated content to a temp
file, then deletes the old file and renames the temp to the control file. But
in a rare situation, its possible that GTM may exit before renaming the temp
file. In such cases, we should use the temp file after renaming it to the
orignal file.

More improvements in this area are necessary.

P.S. This commit gets distinction to be the first commit, pushed from 41000
feet in the air ;-)

9 years agoTest output and sql changes
Pallavi Sontakke [Wed, 3 Feb 2016 13:49:08 +0000 (19:19 +0530)]
Test output and sql changes

Run rangefuncs separately in parallel_schedule,
as it has table names common with group.

9 years agoAdd expected output previously removed.
Pallavi Sontakke [Wed, 3 Feb 2016 05:31:33 +0000 (11:01 +0530)]
Add expected output previously removed.

Add back as it is needed on some systems.

9 years agoTest output and sql changes
Pallavi Sontakke [Tue, 2 Feb 2016 09:17:30 +0000 (14:47 +0530)]
Test output and sql changes

Change comments on FQS of query as per behavior #59
Separate out an issue #67 from xc_copy

9 years agoFix collate regression case by removing an ORDER BY (added in XL) which seems
Pavan Deolasee [Mon, 1 Feb 2016 10:55:50 +0000 (11:55 +0100)]
Fix collate regression case by removing an ORDER BY (added in XL) which seems
to produce different results on different platforms.

Expected output adjusted accordingly

9 years agoChange expected output for 'transactions' test case which seems to be working
Pavan Deolasee [Mon, 1 Feb 2016 09:29:33 +0000 (10:29 +0100)]
Change expected output for 'transactions' test case which seems to be working
fine after recent bug fixes.

9 years agoExponetially increase the sleep before retrying commit on the GTM.
Pavan Deolasee [Mon, 1 Feb 2016 09:19:37 +0000 (10:19 +0100)]
Exponetially increase the sleep before retrying commit on the GTM.

When a transaction waits for another transaction to complete, we enforce the
same ordering on the same GTM by making the former transaction wait on the
latter. We do this by a simple retry logic. While the latter transaction should
ideally finish soon because it has already finished on the datanode, the retry
loop now waits exponentially, starting at 1000usec but limited by 1s.

Patch by Mason Sharp

9 years agoDo not throw a FATAL error when SharedQ producer times out while waiting for
Pavan Deolasee [Sun, 31 Jan 2016 08:25:01 +0000 (13:55 +0530)]
Do not throw a FATAL error when SharedQ producer times out while waiting for
one or more consumers to finish.

We have seen bunch of cases where a consumer may never bind to the SharedQ and
rightfully so. For example, in a join between 3 tables which requires
redistribution of tuples, a consumer may not at all bind to the SharedQ because
it the top level outer side did not produce any tuples to join against the
redistributed inner node.

This patch avoids the unnecessary FATAL errors, but what we still do not do
nicely is to avoid the 10s timeout (as currently set for producer). So while
queries, as included in the test case, will finally return success, it will
unnecessarily add a 10s delay in the response time. This is a TODO.

9 years agoRemove a WARNING about coordinator provided snapshot not available.
Pavan Deolasee [Sun, 31 Jan 2016 07:49:53 +0000 (13:19 +0530)]
Remove a WARNING about coordinator provided snapshot not available.

There are a few expected cases, such as catalog scans, where coordinator
supplied snapshot may not be available. So remove this mis-leading warning.

9 years agoFix a bug where queries would incorrectly get executed on the coordinator.
Pavan Deolasee [Fri, 29 Jan 2016 09:16:10 +0000 (14:46 +0530)]
Fix a bug where queries would incorrectly get executed on the coordinator.

Report by Krzysztof Nienartowicz, patch by me.

9 years agoDo not hold the XidGenLock while obtaining an XID from the GTM
Pavan Deolasee [Fri, 29 Jan 2016 09:13:52 +0000 (14:43 +0530)]
Do not hold the XidGenLock while obtaining an XID from the GTM

This was an oversight when on-demand GXID work was committed. Mason reported
that this patch significantly improves performance on his tests and I can
also confirm that with my own tests.

Report and patch by Mason Sharp, with some changes from me.

9 years agoTest output and sql changes
Pallavi Sontakke [Mon, 1 Feb 2016 08:18:19 +0000 (13:48 +0530)]
Test output and sql changes

Fix 2 tests. Partial fix for xc_copy diffs.

9 years agoAvoid redefinition of a signal handler signature
Pavan Deolasee [Thu, 28 Jan 2016 12:50:32 +0000 (18:20 +0530)]
Avoid redefinition of a signal handler signature

9 years agoDo not override the sequence_range setting in COPY
Pavan Deolasee [Thu, 28 Jan 2016 10:27:54 +0000 (15:57 +0530)]
Do not override the sequence_range setting in COPY

The default value of this parameter has now been hiked to 1000. So there is no
good reason to override this in COPY, if the user has explicitly set it back to
1. Honor user defined value in all cases.

We can possibly flag a warning if sequences are being incremened too fast and
the current value of sequence_range is set too low. But no compelling need to
do that just now.

9 years agoTest output and sql changes
Pallavi Sontakke [Fri, 29 Jan 2016 05:41:32 +0000 (11:11 +0530)]
Test output and sql changes

Accept outputs, with some known bugs added.

9 years agoTest sql and output changes
Pallavi Sontakke [Thu, 28 Jan 2016 06:02:42 +0000 (11:32 +0530)]
Test sql and output changes

Comment out known issues and add them to kown bugs.

9 years agoTest output changes
Pallavi Sontakke [Wed, 27 Jan 2016 13:45:24 +0000 (19:15 +0530)]
Test output changes

Fix 2 tests.

9 years agoChange expected output - can't do FQS for a GROUP BY query on a roundrobin
Pavan Deolasee [Wed, 27 Jan 2016 12:03:07 +0000 (17:33 +0530)]
Change expected output - can't do FQS for a GROUP BY query on a roundrobin
table

9 years agoFix a bug where a query was getting incorrectly FQSed when the GROUP BY clause
Pavan Deolasee [Wed, 27 Jan 2016 11:53:25 +0000 (17:23 +0530)]
Fix a bug where a query was getting incorrectly FQSed when the GROUP BY clause
contains only non-distribution keys.

Also rerun all the xc_groupby tests with enable_fast_query_shipping ON so that
similar issues can be caught more easily

9 years agoFix a protocol message to register the GTM proxy
Pavan Deolasee [Wed, 27 Jan 2016 04:17:20 +0000 (09:47 +0530)]
Fix a protocol message to register the GTM proxy

9 years agoFix compiler warnings in stormstats, some of which may also cause failures on
Pavan Deolasee [Wed, 27 Jan 2016 02:41:07 +0000 (08:11 +0530)]
Fix compiler warnings in stormstats, some of which may also cause failures on
other platforms.

9 years agoAdd missing DISTRIBUTE RANDOMLY to the specs in the documentation
Pavan Deolasee [Mon, 25 Jan 2016 16:46:41 +0000 (22:16 +0530)]
Add missing DISTRIBUTE RANDOMLY to the specs in the documentation

9 years agoChange expected output for select_views test case.
Pavan Deolasee [Mon, 25 Jan 2016 14:09:41 +0000 (19:39 +0530)]
Change expected output for select_views test case.

9 years agoChange some part of expected output file for test case rowsecurity, related to
Pavan Deolasee [Mon, 25 Jan 2016 12:11:55 +0000 (17:41 +0530)]
Change some part of expected output file for test case rowsecurity, related to
XL plan changes.

9 years agoChange expected output for prepared_xacts test case to accept newer changes
Pavan Deolasee [Mon, 25 Jan 2016 11:41:59 +0000 (17:11 +0530)]
Change expected output for prepared_xacts test case to accept newer changes
from PG

9 years agoTest output changes
Pallavi Sontakke [Mon, 25 Jan 2016 11:14:30 +0000 (16:44 +0530)]
Test output changes

Accept some XL outputs for tests.

9 years agoAvoid using EXPLAIN VERBOSE when temp tables are involved in a test case.
Pavan Deolasee [Mon, 25 Jan 2016 10:55:16 +0000 (16:25 +0530)]
Avoid using EXPLAIN VERBOSE when temp tables are involved in a test case.

In XL, the temporary schema may change in different regression runs. Hence we
must not print the schema in expected output. Change the sql as well as
expected output file for the 'join' test case.