1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

jsonb internal API void * argument for binary data

Change some internal jsonb API functions to take void * for binary
data instead of char *.  This removes the need for numerous casts.

Reviewed-by: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Discussion: https://www.postgresql.org/message-id/flat/fd1fcedb-3492-4fc8-9e3e-74b97f2db6c7%40eisentraut.org
This commit is contained in:
Peter Eisentraut
2025-02-23 08:34:55 +01:00
parent cb45dc3afb
commit f98765f0ce

View File

@ -48,8 +48,8 @@ static void convertJsonbObject(StringInfo buffer, JEntry *header, JsonbValue *va
static void convertJsonbScalar(StringInfo buffer, JEntry *header, JsonbValue *scalarVal); static void convertJsonbScalar(StringInfo buffer, JEntry *header, JsonbValue *scalarVal);
static int reserveFromBuffer(StringInfo buffer, int len); static int reserveFromBuffer(StringInfo buffer, int len);
static void appendToBuffer(StringInfo buffer, const char *data, int len); static void appendToBuffer(StringInfo buffer, const void *data, int len);
static void copyToBuffer(StringInfo buffer, int offset, const char *data, int len); static void copyToBuffer(StringInfo buffer, int offset, const void *data, int len);
static short padBufferToInt(StringInfo buffer); static short padBufferToInt(StringInfo buffer);
static JsonbIterator *iteratorFromContainer(JsonbContainer *container, JsonbIterator *parent); static JsonbIterator *iteratorFromContainer(JsonbContainer *container, JsonbIterator *parent);
@ -1508,7 +1508,7 @@ reserveFromBuffer(StringInfo buffer, int len)
* Copy 'len' bytes to a previously reserved area in buffer. * Copy 'len' bytes to a previously reserved area in buffer.
*/ */
static void static void
copyToBuffer(StringInfo buffer, int offset, const char *data, int len) copyToBuffer(StringInfo buffer, int offset, const void *data, int len)
{ {
memcpy(buffer->data + offset, data, len); memcpy(buffer->data + offset, data, len);
} }
@ -1517,7 +1517,7 @@ copyToBuffer(StringInfo buffer, int offset, const char *data, int len)
* A shorthand for reserveFromBuffer + copyToBuffer. * A shorthand for reserveFromBuffer + copyToBuffer.
*/ */
static void static void
appendToBuffer(StringInfo buffer, const char *data, int len) appendToBuffer(StringInfo buffer, const void *data, int len)
{ {
int offset; int offset;
@ -1646,7 +1646,7 @@ convertJsonbArray(StringInfo buffer, JEntry *header, JsonbValue *val, int level)
containerhead |= JB_FSCALAR; containerhead |= JB_FSCALAR;
} }
appendToBuffer(buffer, (char *) &containerhead, sizeof(uint32)); appendToBuffer(buffer, &containerhead, sizeof(uint32));
/* Reserve space for the JEntries of the elements. */ /* Reserve space for the JEntries of the elements. */
jentry_offset = reserveFromBuffer(buffer, sizeof(JEntry) * nElems); jentry_offset = reserveFromBuffer(buffer, sizeof(JEntry) * nElems);
@ -1684,7 +1684,7 @@ convertJsonbArray(StringInfo buffer, JEntry *header, JsonbValue *val, int level)
if ((i % JB_OFFSET_STRIDE) == 0) if ((i % JB_OFFSET_STRIDE) == 0)
meta = (meta & JENTRY_TYPEMASK) | totallen | JENTRY_HAS_OFF; meta = (meta & JENTRY_TYPEMASK) | totallen | JENTRY_HAS_OFF;
copyToBuffer(buffer, jentry_offset, (char *) &meta, sizeof(JEntry)); copyToBuffer(buffer, jentry_offset, &meta, sizeof(JEntry));
jentry_offset += sizeof(JEntry); jentry_offset += sizeof(JEntry);
} }
@ -1723,7 +1723,7 @@ convertJsonbObject(StringInfo buffer, JEntry *header, JsonbValue *val, int level
* variable-length payload. * variable-length payload.
*/ */
containerheader = nPairs | JB_FOBJECT; containerheader = nPairs | JB_FOBJECT;
appendToBuffer(buffer, (char *) &containerheader, sizeof(uint32)); appendToBuffer(buffer, &containerheader, sizeof(uint32));
/* Reserve space for the JEntries of the keys and values. */ /* Reserve space for the JEntries of the keys and values. */
jentry_offset = reserveFromBuffer(buffer, sizeof(JEntry) * nPairs * 2); jentry_offset = reserveFromBuffer(buffer, sizeof(JEntry) * nPairs * 2);
@ -1765,7 +1765,7 @@ convertJsonbObject(StringInfo buffer, JEntry *header, JsonbValue *val, int level
if ((i % JB_OFFSET_STRIDE) == 0) if ((i % JB_OFFSET_STRIDE) == 0)
meta = (meta & JENTRY_TYPEMASK) | totallen | JENTRY_HAS_OFF; meta = (meta & JENTRY_TYPEMASK) | totallen | JENTRY_HAS_OFF;
copyToBuffer(buffer, jentry_offset, (char *) &meta, sizeof(JEntry)); copyToBuffer(buffer, jentry_offset, &meta, sizeof(JEntry));
jentry_offset += sizeof(JEntry); jentry_offset += sizeof(JEntry);
} }
for (i = 0; i < nPairs; i++) for (i = 0; i < nPairs; i++)
@ -1800,7 +1800,7 @@ convertJsonbObject(StringInfo buffer, JEntry *header, JsonbValue *val, int level
if (((i + nPairs) % JB_OFFSET_STRIDE) == 0) if (((i + nPairs) % JB_OFFSET_STRIDE) == 0)
meta = (meta & JENTRY_TYPEMASK) | totallen | JENTRY_HAS_OFF; meta = (meta & JENTRY_TYPEMASK) | totallen | JENTRY_HAS_OFF;
copyToBuffer(buffer, jentry_offset, (char *) &meta, sizeof(JEntry)); copyToBuffer(buffer, jentry_offset, &meta, sizeof(JEntry));
jentry_offset += sizeof(JEntry); jentry_offset += sizeof(JEntry);
} }
@ -1840,7 +1840,7 @@ convertJsonbScalar(StringInfo buffer, JEntry *header, JsonbValue *scalarVal)
numlen = VARSIZE_ANY(scalarVal->val.numeric); numlen = VARSIZE_ANY(scalarVal->val.numeric);
padlen = padBufferToInt(buffer); padlen = padBufferToInt(buffer);
appendToBuffer(buffer, (char *) scalarVal->val.numeric, numlen); appendToBuffer(buffer, scalarVal->val.numeric, numlen);
*header = JENTRY_ISNUMERIC | (padlen + numlen); *header = JENTRY_ISNUMERIC | (padlen + numlen);
break; break;