@ -42,7 +42,6 @@
# include "utils/array.h"
# include "utils/builtins.h"
# include "utils/geo_decls.h"
# include "utils/lsyscache.h"
# include "utils/memutils.h"
# include "utils/rel.h"
# include "utils/typcache.h"
@ -1222,43 +1221,3 @@ binary_coercible(PG_FUNCTION_ARGS)
PG_RETURN_BOOL ( IsBinaryCoercible ( srctype , targettype ) ) ;
}
/*
* Return the length of the portion of a tuple consisting of the given array
* of data types . The input data types must be fixed - length data types .
*/
PG_FUNCTION_INFO_V1 ( get_columns_length ) ;
Datum
get_columns_length ( PG_FUNCTION_ARGS )
{
ArrayType * ta = PG_GETARG_ARRAYTYPE_P ( 0 ) ;
Oid * type_oids ;
int ntypes ;
int column_offset = 0 ;
if ( ARR_HASNULL ( ta ) & & array_contains_nulls ( ta ) )
elog ( ERROR , " argument must not contain nulls " ) ;
if ( ARR_NDIM ( ta ) > 1 )
elog ( ERROR , " argument must be empty or one-dimensional array " ) ;
type_oids = ( Oid * ) ARR_DATA_PTR ( ta ) ;
ntypes = ArrayGetNItems ( ARR_NDIM ( ta ) , ARR_DIMS ( ta ) ) ;
for ( int i = 0 ; i < ntypes ; i + + )
{
Oid typeoid = type_oids [ i ] ;
int16 typlen ;
bool typbyval ;
char typalign ;
get_typlenbyvalalign ( typeoid , & typlen , & typbyval , & typalign ) ;
/* the data type must be fixed-length */
if ( typlen < 0 )
elog ( ERROR , " type %u is not fixed-length data type " , typeoid ) ;
column_offset = att_align_nominal ( column_offset + typlen , typalign ) ;
}
PG_RETURN_INT32 ( column_offset ) ;
}