@@ -442,9 +442,13 @@ bool database_system_exists (cloudsync_context *data, const char *name, const ch
442442 bool exists = false;
443443
444444 if (strcmp (type , "table" ) == 0 ) {
445- snprintf (query , sizeof (query ), "SELECT 1 FROM pg_tables WHERE schemaname = 'public' AND tablename = '%s'" , name );
445+ snprintf (query , sizeof (query ),
446+ "SELECT 1 FROM pg_tables WHERE schemaname = 'public' AND tablename = '%s'" ,
447+ name );
446448 } else if (strcmp (type , "trigger" ) == 0 ) {
447- snprintf (query , sizeof (query ), "SELECT 1 FROM pg_trigger WHERE tgname = '%s'" , name );
449+ snprintf (query , sizeof (query ),
450+ "SELECT 1 FROM pg_trigger WHERE tgname = '%s'" ,
451+ name );
448452 } else {
449453 return false;
450454 }
@@ -947,9 +951,7 @@ int database_pk_names (cloudsync_context *data, const char *table_name, char ***
947951 Datum datum = SPI_getbinval (tuple , SPI_tuptable -> tupdesc , 1 , & isnull );
948952 if (!isnull ) {
949953 text * txt = DatumGetTextP (datum );
950- MemoryContext old = MemoryContextSwitchTo (TopMemoryContext );
951954 pk_names [i ] = text_to_cstring (txt );
952- MemoryContextSwitchTo (old );
953955 } else {
954956 pk_names [i ] = NULL ;
955957 }
@@ -1304,21 +1306,20 @@ int databasevm_bind_value (dbvm_t *vm, int index, dbvalue_t *value) {
13041306
13051307 pg_stmt_t * stmt = (pg_stmt_t * )vm ;
13061308 pgvalue_t * v = (pgvalue_t * )value ;
1307- if (!v || v -> isnull ) {
1309+ if (!v ) {
13081310 stmt -> values [idx ] = (Datum )0 ;
13091311 stmt -> types [idx ] = TEXTOID ;
13101312 stmt -> nulls [idx ] = 'n' ;
13111313 } else {
13121314 int16 typlen ;
13131315 bool typbyval ;
1314-
1315- get_typlenbyval (v -> typeid , & typlen , & typbyval );
13161316 MemoryContext old = MemoryContextSwitchTo (stmt -> bind_mcxt );
1317+ get_typlenbyval (v -> typeid , & typlen , & typbyval );
13171318 Datum dcopy = typbyval ? v -> datum : datumCopy (v -> datum , typbyval , typlen );
1318- stmt -> values [idx ] = dcopy ;
1319+ stmt -> values [idx ] = v -> isnull ? ( Datum ) 0 : dcopy ;
13191320 MemoryContextSwitchTo (old );
13201321 stmt -> types [idx ] = OidIsValid (v -> typeid ) ? v -> typeid : TEXTOID ;
1321- stmt -> nulls [idx ] = ' ' ;
1322+ stmt -> nulls [idx ] = v -> isnull ? 'n' : ' ' ;
13221323 }
13231324
13241325 if (stmt -> nparams < idx + 1 ) stmt -> nparams = idx + 1 ;
@@ -1714,7 +1715,11 @@ void *dbmem_alloc (uint64_t size) {
17141715}
17151716
17161717void * dbmem_zeroalloc (uint64_t size ) {
1717- return palloc0 (size );
1718+ void * ptr = palloc (size );
1719+ if (ptr ) {
1720+ memset (ptr , 0 , (size_t )size );
1721+ }
1722+ return ptr ;
17181723}
17191724
17201725void * dbmem_realloc (void * ptr , uint64_t new_size ) {
0 commit comments