mirror of
https://github.com/neondatabase/neon.git
synced 2026-05-19 06:00:38 +00:00
## Problem When we start compute with newer version of extension (i.e. 1.2) and then rollback the release, downgrading the compute version, next compute start will try to update extension to the latest version available in neon.control (i.e. 1.1). Thus we need to provide downgrade scripts like neon--1.2--1.1.sql These scripts must revert the changes made by the upgrade scripts in the reverse order. This is necessary to ensure that the next upgrade will work correctly. In general, we need to write upgrade and downgrade scripts to be more robust and add IF EXISTS / CREATE OR REPLACE clauses to all statements (where applicable). ## Summary of changes Adds downgrade scripts. Adds test cases for extension downgrade/upgrade. fixes #7066 This is a follow-up for https://app.incident.io/neondb/incidents/167?tab=follow-ups Signed-off-by: Alex Chi Z <chi@neon.tech> Co-authored-by: Alex Chi Z <iskyzh@gmail.com> Co-authored-by: Anastasia Lubennikova <anastasia@neon.tech>
59 lines
1.4 KiB
Makefile
59 lines
1.4 KiB
Makefile
# pgxs/neon/Makefile
|
|
|
|
|
|
MODULE_big = neon
|
|
OBJS = \
|
|
$(WIN32RES) \
|
|
extension_server.o \
|
|
file_cache.o \
|
|
libpagestore.o \
|
|
neon.o \
|
|
neon_utils.o \
|
|
neon_walreader.o \
|
|
pagestore_smgr.o \
|
|
relsize_cache.o \
|
|
walproposer.o \
|
|
walproposer_pg.o \
|
|
control_plane_connector.o
|
|
|
|
PG_CPPFLAGS = -I$(libpq_srcdir)
|
|
SHLIB_LINK_INTERNAL = $(libpq)
|
|
SHLIB_LINK = -lcurl
|
|
|
|
EXTENSION = neon
|
|
DATA = neon--1.0.sql neon--1.0--1.1.sql neon--1.1--1.2.sql neon--1.2--1.3.sql neon--1.3--1.2.sql neon--1.2--1.1.sql neon--1.1--1.0.sql
|
|
PGFILEDESC = "neon - cloud storage for PostgreSQL"
|
|
|
|
EXTRA_CLEAN = \
|
|
libwalproposer.a
|
|
|
|
WALPROP_OBJS = \
|
|
$(WIN32RES) \
|
|
walproposer.o \
|
|
neon_utils.o \
|
|
walproposer_compat.o
|
|
|
|
.PHONY: walproposer-lib
|
|
walproposer-lib: CPPFLAGS += -DWALPROPOSER_LIB
|
|
walproposer-lib: libwalproposer.a;
|
|
|
|
.PHONY: libwalproposer.a
|
|
libwalproposer.a: $(WALPROP_OBJS)
|
|
rm -f $@
|
|
$(AR) $(AROPT) $@ $^
|
|
|
|
# needs vars:
|
|
# FIND_TYPEDEF pointing to find_typedef
|
|
# INDENT pointing to pg_bsd_indent
|
|
# PGINDENT_SCRIPT pointing to pgindent (be careful with PGINDENT var name:
|
|
# pgindent will pick it up as pg_bsd_indent path).
|
|
.PHONY: pgindent
|
|
pgindent:
|
|
+@ echo top_srcdir=$(top_srcdir) top_builddir=$(top_builddir) srcdir=$(srcdir)
|
|
$(FIND_TYPEDEF) . > neon.typedefs
|
|
INDENT=$(INDENT) $(PGINDENT_SCRIPT) --typedefs neon.typedefs $(srcdir)/*.c $(srcdir)/*.h
|
|
|
|
PG_CONFIG = pg_config
|
|
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
|
include $(PGXS)
|