mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04: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
 |