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). * returned when escontext is an ErrorSaveContext).
*/ */
bool bool
pg_parse_json_or_errsave(JsonLexContext *lex, JsonSemAction *sem, pg_parse_json_or_errsave(JsonLexContext *lex, const JsonSemAction *sem,
Node *escontext) Node *escontext)
{ {
JsonParseErrorType result; 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_string(JsonLexContext *lex);
static inline JsonParseErrorType json_lex_number(JsonLexContext *lex, const char *s, static inline JsonParseErrorType json_lex_number(JsonLexContext *lex, const char *s,
bool *num_err, size_t *total_len); bool *num_err, size_t *total_len);
static inline JsonParseErrorType parse_scalar(JsonLexContext *lex, JsonSemAction *sem); static inline JsonParseErrorType parse_scalar(JsonLexContext *lex, const JsonSemAction *sem);
static JsonParseErrorType parse_object_field(JsonLexContext *lex, JsonSemAction *sem); static JsonParseErrorType parse_object_field(JsonLexContext *lex, const JsonSemAction *sem);
static JsonParseErrorType parse_object(JsonLexContext *lex, JsonSemAction *sem); static JsonParseErrorType parse_object(JsonLexContext *lex, const JsonSemAction *sem);
static JsonParseErrorType parse_array_element(JsonLexContext *lex, JsonSemAction *sem); static JsonParseErrorType parse_array_element(JsonLexContext *lex, const JsonSemAction *sem);
static JsonParseErrorType parse_array(JsonLexContext *lex, JsonSemAction *sem); static JsonParseErrorType parse_array(JsonLexContext *lex, const JsonSemAction *sem);
static JsonParseErrorType report_parse_error(JsonParseContext ctx, JsonLexContext *lex); static JsonParseErrorType report_parse_error(JsonParseContext ctx, JsonLexContext *lex);
/* the null action object used for pure validation */ /* the null action object used for pure validation */
JsonSemAction nullSemAction = const JsonSemAction nullSemAction =
{ {
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL NULL, NULL, NULL, NULL, NULL
@ -519,7 +519,7 @@ freeJsonLexContext(JsonLexContext *lex)
* other differences. * other differences.
*/ */
JsonParseErrorType JsonParseErrorType
pg_parse_json(JsonLexContext *lex, JsonSemAction *sem) pg_parse_json(JsonLexContext *lex, const JsonSemAction *sem)
{ {
#ifdef FORCE_JSON_PSTACK #ifdef FORCE_JSON_PSTACK
@ -648,7 +648,7 @@ json_count_array_elements(JsonLexContext *lex, int *elements)
*/ */
JsonParseErrorType JsonParseErrorType
pg_parse_json_incremental(JsonLexContext *lex, pg_parse_json_incremental(JsonLexContext *lex,
JsonSemAction *sem, const JsonSemAction *sem,
const char *json, const char *json,
size_t len, size_t len,
bool is_last) bool is_last)
@ -1005,7 +1005,7 @@ pg_parse_json_incremental(JsonLexContext *lex,
* - object field * - object field
*/ */
static inline JsonParseErrorType static inline JsonParseErrorType
parse_scalar(JsonLexContext *lex, JsonSemAction *sem) parse_scalar(JsonLexContext *lex, const JsonSemAction *sem)
{ {
char *val = NULL; char *val = NULL;
json_scalar_action sfunc = sem->scalar; json_scalar_action sfunc = sem->scalar;
@ -1049,7 +1049,7 @@ parse_scalar(JsonLexContext *lex, JsonSemAction *sem)
} }
static JsonParseErrorType 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, * 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 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 * an object is a possibly empty sequence of object fields, separated by
@ -1185,7 +1185,7 @@ parse_object(JsonLexContext *lex, JsonSemAction *sem)
} }
static JsonParseErrorType 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 astart = sem->array_element_start;
json_aelem_action aend = sem->array_element_end; json_aelem_action aend = sem->array_element_end;
@ -1229,7 +1229,7 @@ parse_array_element(JsonLexContext *lex, JsonSemAction *sem)
} }
static JsonParseErrorType 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 * 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. * does nothing and just continues.
*/ */
extern JsonParseErrorType pg_parse_json(JsonLexContext *lex, extern JsonParseErrorType pg_parse_json(JsonLexContext *lex,
JsonSemAction *sem); const JsonSemAction *sem);
extern JsonParseErrorType pg_parse_json_incremental(JsonLexContext *lex, extern JsonParseErrorType pg_parse_json_incremental(JsonLexContext *lex,
JsonSemAction *sem, const JsonSemAction *sem,
const char *json, const char *json,
size_t len, size_t len,
bool is_last); bool is_last);
/* the null action object used for pure validation */ /* 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 * 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); extern JsonLexContext *makeJsonLexContext(JsonLexContext *lex, text *json, bool need_escapes);
/* try to parse json, and errsave(escontext) on failure */ /* 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); struct Node *escontext);
#define pg_parse_json_or_ereport(lex, sem) \ #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; size_t chunk_size = DEFAULT_CHUNK_SIZE;
struct stat statbuf; struct stat statbuf;
off_t bytes_left; off_t bytes_left;
JsonSemAction *testsem = &nullSemAction; const JsonSemAction *testsem = &nullSemAction;
char *testfile; char *testfile;
int c; int c;
bool need_strings = false; bool need_strings = false;