mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-11 19:20:40 +08:00
Testing SvTYPE() directly is more fraught with problems than one might think, because depending on context Perl might be storing a scalar value in one of several forms, eg both numeric and string values. This resulted in Perl-version-dependent buildfarm test failures. Instead use the SvTYPE test only to distinguish non-scalar cases (AV, HV, NULL). Disambiguate scalars by testing SvIOK, SvNOK, then SvPOK. This creates a preference order for how we will resolve cases where the value is available in more than one form, which seems fine to me. Furthermore, because we're now dealing directly with a "double" value in the SvNOK case, we can get rid of an inadequate and unportable string-comparison test for infinities, and use isinf() instead. (We do need some additional #include and "-lm" infrastructure to use that in a contrib module, per prior experiences.) In passing, prevent the regression test results from depending on DROP CASCADE order; I've not seen that malfunction, but it's trouble waiting to happen. Discussion: https://postgr.es/m/E1f3MMJ-0006bf-B0@gemulon.postgresql.org
43 lines
1.3 KiB
Makefile
43 lines
1.3 KiB
Makefile
# contrib/jsonb_plperl/Makefile
|
|
|
|
MODULE_big = jsonb_plperl
|
|
OBJS = jsonb_plperl.o $(WIN32RES)
|
|
PGFILEDESC = "jsonb_plperl - jsonb transform for plperl"
|
|
|
|
PG_CPPFLAGS = -I$(top_srcdir)/src/pl/plperl
|
|
|
|
EXTENSION = jsonb_plperlu jsonb_plperl
|
|
DATA = jsonb_plperlu--1.0.sql jsonb_plperl--1.0.sql
|
|
|
|
REGRESS = jsonb_plperl jsonb_plperlu
|
|
|
|
SHLIB_LINK += $(filter -lm, $(LIBS))
|
|
|
|
ifdef USE_PGXS
|
|
PG_CONFIG = pg_config
|
|
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
|
include $(PGXS)
|
|
else
|
|
subdir = contrib/jsonb_plperl
|
|
top_builddir = ../..
|
|
include $(top_builddir)/src/Makefile.global
|
|
include $(top_srcdir)/contrib/contrib-global.mk
|
|
endif
|
|
|
|
# We must link libperl explicitly
|
|
ifeq ($(PORTNAME), win32)
|
|
# these settings are the same as for plperl
|
|
override CPPFLAGS += -DPLPERL_HAVE_UID_GID -Wno-comment
|
|
# ... see silliness in plperl Makefile ...
|
|
SHLIB_LINK_INTERNAL += $(sort $(wildcard ../../src/pl/plperl/libperl*.a))
|
|
else
|
|
rpathdir = $(perl_archlibexp)/CORE
|
|
SHLIB_LINK += $(perl_embed_ldflags)
|
|
endif
|
|
|
|
# As with plperl we need to make sure that the CORE directory is included
|
|
# last, probably because it sometimes contains some header files with names
|
|
# that clash with some of ours, or with some that we include, notably on
|
|
# Windows.
|
|
override CPPFLAGS := $(CPPFLAGS) $(perl_embed_ccflags) -I$(perl_archlibexp)/CORE
|