jsonapi type fixups

Started by Peter Eisentrautalmost 2 years ago4 messageshackers
Jump to latest
#1Peter Eisentraut
peter_e@gmx.net

I have this patch series that fixes up the types of the new incremental
JSON API a bit. Specifically, it uses "const" throughout so that the
top-level entry points such as pg_parse_json_incremental() can declare
their arguments as const char * instead of just char *. This just
works, it doesn't require any new casting tricks. In fact, it removes a
few unconstify() calls.

Also, a few arguments and variables that relate to object sizes should
be size_t rather than int. At this point, this mainly makes the API
better self-documenting. I don't think it actually works to parse
larger than 2 GB chunks (not tested).

Attachments:

0001-jsonapi-Use-size_t.patchtext/plain; charset=UTF-8; name=0001-jsonapi-Use-size_t.patchDownload+18-19
0002-jsonapi-Use-const-char.patchtext/plain; charset=UTF-8; name=0002-jsonapi-Use-const-char.patchDownload+39-39
0003-parse_manifest-Use-const-char.patchtext/plain; charset=UTF-8; name=0003-parse_manifest-Use-const-char.patchDownload+24-25
#2Andrew Dunstan
andrew@dunslane.net
In reply to: Peter Eisentraut (#1)
Re: jsonapi type fixups

On 2024-06-18 Tu 7:48 AM, Peter Eisentraut wrote:

I have this patch series that fixes up the types of the new
incremental JSON API a bit.  Specifically, it uses "const" throughout
so that the top-level entry points such as pg_parse_json_incremental()
can declare their arguments as const char * instead of just char *. 
This just works, it doesn't require any new casting tricks.  In fact,
it removes a few unconstify() calls.

Also, a few arguments and variables that relate to object sizes should
be size_t rather than int.  At this point, this mainly makes the API
better self-documenting.  I don't think it actually works to parse
larger than 2 GB chunks (not tested).

I think this is mostly OK.

The change at line 1857 of jsonapi.c looks dubious, though. The pointer
variable p looks anything but constant. Perhaps I'm misunderstanding.

It would also be nice to reword the comment at line 3142 of jsonfuncs.c,
so it can still fit on one line.

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

#3Andrew Dunstan
andrew@dunslane.net
In reply to: Andrew Dunstan (#2)
Re: jsonapi type fixups

On 2024-06-20 Th 8:05 AM, Andrew Dunstan wrote:

On 2024-06-18 Tu 7:48 AM, Peter Eisentraut wrote:

I have this patch series that fixes up the types of the new
incremental JSON API a bit.  Specifically, it uses "const" throughout
so that the top-level entry points such as
pg_parse_json_incremental() can declare their arguments as const char
* instead of just char *.  This just works, it doesn't require any
new casting tricks.  In fact, it removes a few unconstify() calls.

Also, a few arguments and variables that relate to object sizes
should be size_t rather than int.  At this point, this mainly makes
the API better self-documenting.  I don't think it actually works to
parse larger than 2 GB chunks (not tested).

I think this is mostly OK.

The change at line 1857 of jsonapi.c looks dubious, though. The
pointer variable p looks anything but constant. Perhaps I'm
misunderstanding.

Ignore this comment, moment of brain fade. Of course it's the string
that's constant, not the pointer.

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

#4Peter Eisentraut
peter_e@gmx.net
In reply to: Andrew Dunstan (#2)
Re: jsonapi type fixups

On 20.06.24 14:05, Andrew Dunstan wrote:

On 2024-06-18 Tu 7:48 AM, Peter Eisentraut wrote:

I have this patch series that fixes up the types of the new
incremental JSON API a bit.  Specifically, it uses "const" throughout
so that the top-level entry points such as pg_parse_json_incremental()
can declare their arguments as const char * instead of just char *.
This just works, it doesn't require any new casting tricks.  In fact,
it removes a few unconstify() calls.

Also, a few arguments and variables that relate to object sizes should
be size_t rather than int.  At this point, this mainly makes the API
better self-documenting.  I don't think it actually works to parse
larger than 2 GB chunks (not tested).

I think this is mostly OK.

It would also be nice to reword the comment at line 3142 of jsonfuncs.c,
so it can still fit on one line.

Agreed. Committed with that fixup.