Re: pgsql: Centralize json and jsonb handling of datetime types

2018-01-17 Thread Amit Langote
On Wed, Jan 17, 2018 at 5:34 PM, Andrew Dunstan
 wrote:
>
>
> On 01/17/2018 12:34 AM, Amit Langote wrote:
>> On Wed, Jan 17, 2018 at 9:29 AM, Andrew Dunstan  wrote:
>>> Centralize json and jsonb handling of datetime types
>> [ ... ]
>>
>>> src/include/utils/date.h  |   4 +-
>> I noticed that these changes cause the following warning to be emitted
>> when compiling with gcc (GCC) 6.2.0:
>>
>> Attached is a fix.
>>
>
> Thanks, this is the right fix but in the wrong place. I have added the
> include in the file where pg_tm is actually used.

Thank you.

Regards,
Amit



Re: pgsql: Centralize json and jsonb handling of datetime types

2018-01-17 Thread Andrew Dunstan


On 01/17/2018 12:34 AM, Amit Langote wrote:
> On Wed, Jan 17, 2018 at 9:29 AM, Andrew Dunstan  wrote:
>> Centralize json and jsonb handling of datetime types
> [ ... ]
>
>> src/include/utils/date.h  |   4 +-
> I noticed that these changes cause the following warning to be emitted
> when compiling with gcc (GCC) 6.2.0:
>
> In file included from gram.y:63:0:
> ../../../src/include/utils/date.h:76:41: warning: ‘struct pg_tm’
> declared inside parameter list will not be visible outside of this
> definition or declaration
> extern int time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec);
>  ^
> ../../../src/include/utils/date.h:77:46: warning: ‘struct pg_tm’
> declared inside parameter list will not be visible outside of this
> definition or declaration
> extern int timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, int 
> *tzp);
>
> Attached is a fix.
>

Thanks, this is the right fix but in the wrong place. I have added the
include in the file where pg_tm is actually used.

cheers

andrew

-- 
Andrew Dunstanhttps://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: pgsql: Centralize json and jsonb handling of datetime types

2018-01-16 Thread Erik Rijkers

On 2018-01-17 01:29, Andrew Dunstan wrote:

Centralize json and jsonb handling of datetime types

[...]

https://git.postgresql.org/pg/commitdiff/cc4feded0a31d2b732d4ea68613115cb720e624e

Modified Files
--
src/backend/utils/adt/date.c  |   6 +--
src/backend/utils/adt/json.c  | 122 
--

src/backend/utils/adt/jsonb.c |  70 
src/include/utils/date.h  |   4 +-
src/include/utils/jsonapi.h   |   2 +
5 files changed, 109 insertions(+), 95 deletions(-)


Latest gcc 7.2.0 compile shows these warnings (I suppose these come from 
this commit):


Compiling core:

In file included from gram.y:63:0:
../../../src/include/utils/date.h:76:41: warning: ‘struct pg_tm’ 
declared inside parameter list will not be visible outside of this 
definition or declaration

 extern int time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec);
 ^
../../../src/include/utils/date.h:77:46: warning: ‘struct pg_tm’ 
declared inside parameter list will not be visible outside of this 
definition or declaration
 extern int timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, 
int *tzp);

  ^
In file included from formatting.c:92:0:
../../../../src/include/utils/date.h:76:41: warning: ‘struct pg_tm’ 
declared inside parameter list will not be visible outside of this 
definition or declaration

 extern int time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec);
 ^
../../../../src/include/utils/date.h:77:46: warning: ‘struct pg_tm’ 
declared inside parameter list will not be visible outside of this 
definition or declaration
 extern int timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, 
int *tzp);



... while contrib adds:

In file included from btree_gin.c:12:0:
../../src/include/utils/date.h:76:41: warning: ‘struct pg_tm’ declared 
inside parameter list will not be visible outside of this definition or 
declaration

 extern int time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec);
 ^
../../src/include/utils/date.h:77:46: warning: ‘struct pg_tm’ declared 
inside parameter list will not be visible outside of this definition or 
declaration
 extern int timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, 
int *tzp);

  ^
In file included from btree_utils_num.c:9:0:
../../src/include/utils/date.h:76:41: warning: ‘struct pg_tm’ declared 
inside parameter list will not be visible outside of this definition or 
declaration

 extern int time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec);
 ^
../../src/include/utils/date.h:77:46: warning: ‘struct pg_tm’ declared 
inside parameter list will not be visible outside of this definition or 
declaration
 extern int timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, 
int *tzp);

  ^
In file included from btree_time.c:9:0:
../../src/include/utils/date.h:76:41: warning: ‘struct pg_tm’ declared 
inside parameter list will not be visible outside of this definition or 
declaration

 extern int time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec);
 ^
../../src/include/utils/date.h:77:46: warning: ‘struct pg_tm’ declared 
inside parameter list will not be visible outside of this definition or 
declaration
 extern int timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, 
int *tzp);

  ^
In file included from btree_date.c:9:0:
../../src/include/utils/date.h:76:41: warning: ‘struct pg_tm’ declared 
inside parameter list will not be visible outside of this definition or 
declaration

 extern int time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec);
 ^
../../src/include/utils/date.h:77:46: warning: ‘struct pg_tm’ declared 
inside parameter list will not be visible outside of this definition or 
declaration
 extern int timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, 
int *tzp);



No errors, and 'make check' and 'make check-world' are both OK.


thanks,

Erik Rijkers