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.
pull/1492/head
Burak Yucesoy 2017-05-23 10:01:59 +03:00 committed by Jason Petersen
parent 0530974d3d
commit 5b300a7aa9
No known key found for this signature in database
GPG Key ID: 9F1D3510D110ABA9
3 changed files with 9 additions and 10 deletions

View File

@ -1419,11 +1419,9 @@ ErrorIfUnstableCreateOrAlterExtensionStmt(Node *parsetree)
{ {
/* /*
* No version was specified, so PostgreSQL will use the default_version * No version was specified, so PostgreSQL will use the default_version
* from the citus.control file. In case a new default is available, we * from the citus.control file.
* will force a compatibility check of the latest available version.
*/ */
citusVersionKnownCompatible = false; CheckAvailableVersion(ERROR);
CheckCitusVersion(ERROR);
} }
} }

View File

@ -106,7 +106,7 @@ static Oid workerHashFunctionId = InvalidOid;
/* Citus extension version variables */ /* Citus extension version variables */
bool EnableVersionChecks = true; /* version checks are enabled */ bool EnableVersionChecks = true; /* version checks are enabled */
bool citusVersionKnownCompatible = false; static bool citusVersionKnownCompatible = false;
/* Hash table for informations about each partition */ /* Hash table for informations about each partition */
static HTAB *DistTableCacheHash = NULL; static HTAB *DistTableCacheHash = NULL;
@ -143,7 +143,6 @@ static bool HasUniformHashDistribution(ShardInterval **shardIntervalArray,
static bool HasUninitializedShardInterval(ShardInterval **sortedShardIntervalArray, static bool HasUninitializedShardInterval(ShardInterval **sortedShardIntervalArray,
int shardCount); int shardCount);
static bool CheckInstalledVersion(int elevel); static bool CheckInstalledVersion(int elevel);
static bool CheckAvailableVersion(int elevel);
static char * AvailableExtensionVersion(void); static char * AvailableExtensionVersion(void);
static char * InstalledExtensionVersion(void); static char * InstalledExtensionVersion(void);
static bool HasOverlappingShardInterval(ShardInterval **shardIntervalArray, static bool HasOverlappingShardInterval(ShardInterval **shardIntervalArray,
@ -1181,13 +1180,15 @@ CheckCitusVersion(int elevel)
* this function logs an error with the specified elevel and returns false, * this function logs an error with the specified elevel and returns false,
* otherwise it returns true. * otherwise it returns true.
*/ */
static bool bool
CheckAvailableVersion(int elevel) CheckAvailableVersion(int elevel)
{ {
char *availableVersion = NULL; char *availableVersion = NULL;
Assert(CitusHasBeenLoaded()); if (!EnableVersionChecks)
Assert(EnableVersionChecks); {
return true;
}
availableVersion = AvailableExtensionVersion(); availableVersion = AvailableExtensionVersion();

View File

@ -18,7 +18,6 @@
#include "utils/hsearch.h" #include "utils/hsearch.h"
extern bool EnableVersionChecks; extern bool EnableVersionChecks;
extern bool citusVersionKnownCompatible;
/* /*
* Representation of a table's metadata that is frequently used for * Representation of a table's metadata that is frequently used for
@ -80,6 +79,7 @@ extern void CitusInvalidateRelcacheByShardId(int64 shardId);
extern bool CitusHasBeenLoaded(void); extern bool CitusHasBeenLoaded(void);
extern bool CheckCitusVersion(int elevel); extern bool CheckCitusVersion(int elevel);
extern bool CheckAvailableVersion(int elevel);
bool MajorVersionsCompatible(char *leftVersion, char *rightVersion); bool MajorVersionsCompatible(char *leftVersion, char *rightVersion);
/* access WorkerNodeHash */ /* access WorkerNodeHash */