Skip to content

Commit a8ea296

Browse files
committed
Revert "More memory related fixes"
This reverts commit f44c161.
1 parent e47ef00 commit a8ea296

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

src/postgresql/database_postgresql.c

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

17161717
void *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

17201725
void *dbmem_realloc (void *ptr, uint64_t new_size) {

src/postgresql/pgvalue.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,18 +74,15 @@ int pgvalue_dbtype(pgvalue_t *v) {
7474
}
7575
}
7676

77-
static bool pgvalue_vec_push(pgvalue_t ***arr, int *count, int *cap, pgvalue_t *val) {
77+
static void pgvalue_vec_push(pgvalue_t ***arr, int *count, int *cap, pgvalue_t *val) {
7878
if (*cap == 0) {
7979
*cap = 8;
8080
*arr = (pgvalue_t **)cloudsync_memory_zeroalloc(sizeof(pgvalue_t *) * (*cap));
81-
if (!*arr) return false;
8281
} else if (*count >= *cap) {
8382
*cap *= 2;
8483
*arr = (pgvalue_t **)cloudsync_memory_realloc(*arr, sizeof(pgvalue_t *) * (*cap));
85-
if (!*arr) return false;
8684
}
8785
(*arr)[(*count)++] = val;
88-
return true;
8986
}
9087

9188
pgvalue_t **pgvalues_from_array(ArrayType *array, int *out_count) {
@@ -112,9 +109,6 @@ pgvalue_t **pgvalues_from_array(ArrayType *array, int *out_count) {
112109
pgvalue_t *v = pgvalue_create(elems[i], elem_type, -1, InvalidOid, nulls ? nulls[i] : false);
113110
pgvalue_vec_push(&values, &count, &cap, v);
114111
}
115-
116-
if (elems) pfree(elems);
117-
if (nulls) pfree(nulls);
118112

119113
if (out_count) *out_count = count;
120114
return values;

0 commit comments

Comments
 (0)