Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nHoaV-0001QQ-12 for pgsql-novice@arkaria.postgresql.org; Wed, 09 Feb 2022 15:08:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nHoaT-0006CC-MK for pgsql-novice@arkaria.postgresql.org; Wed, 09 Feb 2022 15:08:53 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nHoaT-0006Bx-8f for pgsql-novice@lists.postgresql.org; Wed, 09 Feb 2022 15:08:53 +0000 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nHoaP-0000dA-UK for pgsql-novice@lists.postgresql.org; Wed, 09 Feb 2022 15:08:52 +0000 Received: by mail-ej1-x62d.google.com with SMTP id fj5so5343201ejc.4 for ; Wed, 09 Feb 2022 07:08:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec-at.20210112.gappssmtp.com; s=20210112; h=message-id:subject:from:to:date:in-reply-to:references:user-agent :mime-version:content-transfer-encoding; bh=RzQPIGo6U7syDp0ecyaRGtXo/cHuPoqRlBZE3nC7f5I=; b=Q8JQmzNFCdQfG2FbKWNZaGFUjVK3oIVjydhL2I8IwduDpbTo4s+k/yn/+bNyoHhNWS RBk6M2SG2sGtY70+u3FdLqzzWVDMdk8kFUnp34Qy9GymLxWY0naiogbWTPeQRBEkpJb2 BApHqFONxeo6LUITmIWii+dVxNn22ctSPme3Q8PPxF0dHEVSNKqNPYLADTzwejbwJ2kF O5CTkyMxEiqhebty7NBp4rdR1d9uvtOk6u+WJjN9FXMffAOB8TYOfwXRP0PCeN8/4c65 85mcUtjnCwK85yRxBEUQgXqtN33boaPzcFWrilSLy8y06dq0JKfWqeIM634UNYjUjVXa eVGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=RzQPIGo6U7syDp0ecyaRGtXo/cHuPoqRlBZE3nC7f5I=; b=1m5Y3HGOvZPAB32N+Drr4/Ka28yWSKXbyl4NqXze5broplKzDoYQegGUfuYvyloOvI qDSSOrHLcbtH6mS+NzAPd9ydbrG2MH2v4p04Ju9hKBMuAA3ZyNRoB1+0Up+5hICqTD+L 1boPcCdwD8cWALAuHlT4mwuAUU2FFWZu/U1/uf84O3WP4LXBmuEG6VH/jyL10x8QGHkg 9QpUIL6tXRchMejV/a6k8CtIUyiwGXEYVb+qcXQ8zo033JCnMdySATHmLCzHh6eaIvjB zG2i5w8JbXSvemux2kWmaKzB4ZGA5odq27EfSsed8ifTq+YaCxLIIf45MRpwhITelnBr s0IA== X-Gm-Message-State: AOAM533tNaZKgEinqGEAI7/4vUaLNYCyguaSrNZdJCfG9Seh0fK/VpWb s01+kQbruiTjMG3Q+w3/rnvXkQ== X-Google-Smtp-Source: ABdhPJwqu55o6Vwru90HyiIMHYZyo2SOXMbIc22cKT8pOGp+xNFLHFYNdfO1osmbFXxw1YTPEBkp2Q== X-Received: by 2002:a17:907:6e93:: with SMTP id sh19mr2512127ejc.386.1644419327252; Wed, 09 Feb 2022 07:08:47 -0800 (PST) Received: from localhost.localdomain ([2001:871:5e:cd6a:dc37:5b3a:6c66:7f20]) by smtp.gmail.com with ESMTPSA id fi16sm2653423ejc.193.2022.02.09.07.08.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Feb 2022 07:08:46 -0800 (PST) Message-ID: Subject: Re: How does Postgres support backwards compatibility From: Laurenz Albe To: Josh Innis , pgsql-novice@lists.postgresql.org Date: Wed, 09 Feb 2022 16:08:45 +0100 In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.40.4 (3.40.4-2.fc34) MIME-Version: 1.0 Content-Transfer-Encoding: 7bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Tue, 2022-02-08 at 10:50 -0800, Josh Innis wrote: > I work on an extension for Postgres. We originally developed the extension for Postgres 11. > Now we are looking into supporting newer versions of Postgres. We would like our extension > to be compatible with multiple versions of Postgres. Is there a document that explains how > the Postgres community handles releases and supports older versions? Any information on how > Postgres handles this will give us guidance on how to best approach this subject. PostgreSQL won't break APIs wantonly, but particularly with server internal functions this happens occasionally. So it depends a lot on what your extension does. If it is written in SQL, the odds are good that it will just continue working. If it is written in C and you use a lot of server functions, chances are that you will have to decorate your code with conditional directives like #if PG_VERSION_NUM < 130000 ... #else ... #endif Yours, Laurenz Albe -- Cybertec | https://www.cybertec-postgresql.com