mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-30 00:04:49 -04:00 
			
		
		
		
	plperl's default handling of bool arguments or results is not terribly satisfactory, since Perl doesn't consider the string 'f' to be false. Ideally we'd just fix that, but the backwards-compatibility hazard would be substantial. Instead, build a TRANSFORM module that can be optionally applied to provide saner semantics. Perhaps usefully, this is also about the minimum possible skeletal example of a plperl transform module; so it might be a better starting point for user-written transform modules than hstore_plperl or jsonb_plperl. Ivan Panchenko Discussion: https://postgr.es/m/1583013317.881182688@f390.i.mail.ru
		
			
				
	
	
		
			31 lines
		
	
	
		
			418 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			418 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #include "postgres.h"
 | |
| 
 | |
| #include "fmgr.h"
 | |
| #include "plperl.h"
 | |
| 
 | |
| 
 | |
| PG_MODULE_MAGIC;
 | |
| 
 | |
| PG_FUNCTION_INFO_V1(bool_to_plperl);
 | |
| 
 | |
| Datum
 | |
| bool_to_plperl(PG_FUNCTION_ARGS)
 | |
| {
 | |
| 	dTHX;
 | |
| 	bool		in = PG_GETARG_BOOL(0);
 | |
| 
 | |
| 	return PointerGetDatum(in ? &PL_sv_yes : &PL_sv_no);
 | |
| }
 | |
| 
 | |
| 
 | |
| PG_FUNCTION_INFO_V1(plperl_to_bool);
 | |
| 
 | |
| Datum
 | |
| plperl_to_bool(PG_FUNCTION_ARGS)
 | |
| {
 | |
| 	dTHX;
 | |
| 	SV		   *in = (SV *) PG_GETARG_POINTER(0);
 | |
| 
 | |
| 	PG_RETURN_BOOL(SvTRUE(in));
 | |
| }
 |