PXF Upgrade Error - No Update Path from Version 2.1 to 4.0 in Restricted Environments
search cancel

PXF Upgrade Error - No Update Path from Version 2.1 to 4.0 in Restricted Environments

book

Article ID: 446987

calendar_today

Updated On:

Products

VMware Tanzu Greenplum VMware Tanzu Greenplum / Gemfire

Issue/Introduction

When upgrading Tanzu Greenplum Platform Extension Framework (PXF) from version 6.x to 8.0.0 in environments without root access, running the following SQL command fails:

Error Message: ERROR: extension "pxf" has no update path from version "2.1" to version "4.0"

Environment

Greenplum 6/7

PXF

Cause

This issue typically occurs when PXF is installed via manual extraction (tarball) rather than the standard RPM package.

In a standard RPM installation, a postinstall scriptlet automatically executes sed commands to inject absolute paths into the pxf.control file. When the RPM is bypassed, these metadata fields remain unset or point to incorrect default locations:

  • directory: The location of the Greenplum extension artifacts.
  • module_pathname: The absolute path to the PXF shared library (pxf.so).

Because the control file does not point to the correct 8.0.0 artifacts, PostgreSQL cannot identify the valid update path.

Resolution

To resolve this, you must manually perform the path injection that the RPM installer normally handles.

Step 1: Locate the Control File

On the coordinator and all segment hosts, locate the pxf.control file. It is typically found in the Greenplum installation directory: $GPHOME/share/postgresql/extension/pxf.control

Step 2: Manually Update Metadata

Edit the pxf.control file on all hosts in the cluster. Update the directory and module_pathname fields to match your manual extraction prefix (${PXF_BASE}).

Example Configuration: If your PXF extraction prefix is /usr/local/pxf-gp6, the file should be updated as follows:

directory = '/usr/local/pxf-gp6/gpextable/'
module_pathname = '/usr/local/pxf-gp6/gpextable/pxf'

Step 3: Verify and Update

  1. Ensure the file is synchronized across all hosts.
  2. Log into the Greenplum database and execute the update again:
    ALTER EXTENSION pxf UPDATE;
  3. Verify the installed version:
    SELECT name, default_version, installed_version 
    FROM pg_available_extensions 
    WHERE name = 'pxf';

    The 'installed_version should now show 4.0