Make nullSemAction const, add 'const' decorators to related functions

To make it more clear that these should never be modified.

Reviewed-by: Andres Freund
Discussion: https://www.postgresql.org/message-id/54c29fb0-edf2-48ea-9814-44e918bbd6e8@iki.fi
This commit is contained in:
Heikki Linnakangas 2024-08-06 23:04:22 +03:00
parent 1e35951e71
commit 85829c973c
5 changed files with 19 additions and 19 deletions

View File

@ -514,7 +514,7 @@ static JsonParseErrorType transform_string_values_scalar(void *state, char *toke
* returned when escontext is an ErrorSaveContext).
*/
bool
pg_parse_json_or_errsave(JsonLexContext *lex, JsonSemAction *sem,
pg_parse_json_or_errsave(JsonLexContext *lex, const JsonSemAction *sem,
Node *escontext)
{
JsonParseErrorType result;

View File

@ -213,15 +213,15 @@ static char JSON_PROD_GOAL[] = {JSON_TOKEN_END, JSON_NT_JSON, 0};
static inline JsonParseErrorType json_lex_string(JsonLexContext *lex);
static inline JsonParseErrorType json_lex_number(JsonLexContext *lex, const char *s,
bool *num_err, size_t *total_len);
static inline JsonParseErrorType parse_scalar(JsonLexContext *lex, JsonSemAction *sem);
static JsonParseErrorType parse_object_field(JsonLexContext *lex, JsonSemAction *sem);
static JsonParseErrorType parse_object(JsonLexContext *lex, JsonSemAction *sem);
static JsonParseErrorType parse_array_element(JsonLexContext *lex, JsonSemAction *sem);
static JsonParseErrorType parse_array(JsonLexContext *lex, JsonSemAction *sem);
static inline JsonParseErrorType parse_scalar(JsonLexContext *lex, const JsonSemAction *sem);
static JsonParseErrorType parse_object_field(JsonLexContext *lex, const JsonSemAction *sem);
static JsonParseErrorType parse_object(JsonLexContext *lex, const JsonSemAction *sem);
static JsonParseErrorType parse_array_element(JsonLexContext *lex, const JsonSemAction *sem);
static JsonParseErrorType parse_array(JsonLexContext *lex, const JsonSemAction *sem);
static JsonParseErrorType report_parse_error(JsonParseContext ctx, JsonLexContext *lex);
/* the null action object used for pure validation */
JsonSemAction nullSemAction =
const JsonSemAction nullSemAction =
{
NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL
@ -519,7 +519,7 @@ freeJsonLexContext(JsonLexContext *lex)
* other differences.
*/
JsonParseErrorType
pg_parse_json(JsonLexContext *lex, JsonSemAction *sem)
pg_parse_json(JsonLexContext *lex, const JsonSemAction *sem)
{
#ifdef FORCE_JSON_PSTACK
@ -648,7 +648,7 @@ json_count_array_elements(JsonLexContext *lex, int *elements)
*/
JsonParseErrorType
pg_parse_json_incremental(JsonLexContext *lex,
JsonSemAction *sem,
const JsonSemAction *sem,
const char *json,
size_t len,
bool is_last)
@ -1005,7 +1005,7 @@ pg_parse_json_incremental(JsonLexContext *lex,
* - object field
*/
static inline JsonParseErrorType
parse_scalar(JsonLexContext *lex, JsonSemAction *sem)
parse_scalar(JsonLexContext *lex, const JsonSemAction *sem)
{
char *val = NULL;
json_scalar_action sfunc = sem->scalar;
@ -1049,7 +1049,7 @@ parse_scalar(JsonLexContext *lex, JsonSemAction *sem)
}
static JsonParseErrorType
parse_object_field(JsonLexContext *lex, JsonSemAction *sem)
parse_object_field(JsonLexContext *lex, const JsonSemAction *sem)
{
/*
* An object field is "fieldname" : value where value can be a scalar,
@ -1111,7 +1111,7 @@ parse_object_field(JsonLexContext *lex, JsonSemAction *sem)
}
static JsonParseErrorType
parse_object(JsonLexContext *lex, JsonSemAction *sem)
parse_object(JsonLexContext *lex, const JsonSemAction *sem)
{
/*
* an object is a possibly empty sequence of object fields, separated by
@ -1185,7 +1185,7 @@ parse_object(JsonLexContext *lex, JsonSemAction *sem)
}
static JsonParseErrorType
parse_array_element(JsonLexContext *lex, JsonSemAction *sem)
parse_array_element(JsonLexContext *lex, const JsonSemAction *sem)
{
json_aelem_action astart = sem->array_element_start;
json_aelem_action aend = sem->array_element_end;
@ -1229,7 +1229,7 @@ parse_array_element(JsonLexContext *lex, JsonSemAction *sem)
}
static JsonParseErrorType
parse_array(JsonLexContext *lex, JsonSemAction *sem)
parse_array(JsonLexContext *lex, const JsonSemAction *sem)
{
/*
* an array is a possibly empty sequence of array elements, separated by

View File

@ -153,16 +153,16 @@ typedef struct JsonSemAction
* does nothing and just continues.
*/
extern JsonParseErrorType pg_parse_json(JsonLexContext *lex,
JsonSemAction *sem);
const JsonSemAction *sem);
extern JsonParseErrorType pg_parse_json_incremental(JsonLexContext *lex,
JsonSemAction *sem,
const JsonSemAction *sem,
const char *json,
size_t len,
bool is_last);
/* the null action object used for pure validation */
extern PGDLLIMPORT JsonSemAction nullSemAction;
extern PGDLLIMPORT const JsonSemAction nullSemAction;
/*
* json_count_array_elements performs a fast secondary parse to determine the

View File

@ -41,7 +41,7 @@ typedef text *(*JsonTransformStringValuesAction) (void *state, char *elem_value,
extern JsonLexContext *makeJsonLexContext(JsonLexContext *lex, text *json, bool need_escapes);
/* try to parse json, and errsave(escontext) on failure */
extern bool pg_parse_json_or_errsave(JsonLexContext *lex, JsonSemAction *sem,
extern bool pg_parse_json_or_errsave(JsonLexContext *lex, const JsonSemAction *sem,
struct Node *escontext);
#define pg_parse_json_or_ereport(lex, sem) \

View File

@ -84,7 +84,7 @@ main(int argc, char **argv)
size_t chunk_size = DEFAULT_CHUNK_SIZE;
struct stat statbuf;
off_t bytes_left;
JsonSemAction *testsem = &nullSemAction;
const JsonSemAction *testsem = &nullSemAction;
char *testfile;
int c;
bool need_strings = false;