RE: BUG #15080: ecpg on windows doesn't define HAVE_LONG_LONG_INT
От | Huong Dangminh |
---|---|
Тема | RE: BUG #15080: ecpg on windows doesn't define HAVE_LONG_LONG_INT |
Дата | |
Msg-id | 75DB81BEEA95B445AE6D576A0A5C9E936A76E7E5@BPXM05GP.gisp.nec.co.jp обсуждение исходный текст |
Ответ на | RE: BUG #15080: ecpg on windows doesn't define HAVE_LONG_LONG_INT (Huong Dangminh <huo-dangminh@ys.jp.nec.com>) |
Ответы |
Re: BUG #15080: ecpg on windows doesn't define HAVE_LONG_LONG_INT
|
Список | pgsql-bugs |
> From: Huong Dangminh [mailto:huo-dangminh@ys.jp.nec.com] > > something like > > > > #if (_MSC_VER > 1200) > > #define HAVE_LONG_LONG_INT_64 1 > > #endif > > > > ... > > > > #ifdef HAVE_LONG_LONG_INT_64 > > #define HAVE_STRTOLL 1 > > /* Before VS2013, use Microsoft's nonstandard equivalent function */ > > #if (_MSC_VER < 1800) #define strtoll _strtoi64 #endif #endif > > > > and similarly for strtoull. > > > > Please check that and see if it works. > > Thanks, as you mentioned the attached works fine for me. > I think the code is also fine for the before VS2013 but I not yet tested. > > > BTW, is it possible to set up an ecpg test case to verify that this > > stuff works? > > It'd have to handle platforms without long long though, so I'm not > > sure how to deal with that. > > Yes. I was expecting that at least bigint will works fine with sqlda in > linux system but it seem did not? > Attached test patch works fine in Windows, but in Linux system the > sqlda->sqlvar[i].sqltype return ECPGt_long but not ECPGt_long_long (as > expected) when reference to bigint column. > Is this another problem in linux? Or am I wrong something? Look into the code I found that Linux also need define HAVE_LONG_LONG_INT_64 Flag in order to work with bigint and sqlda. In the following code, sqlda_dynamic_type function return ECPGt_long, If HAVE_LONG_LONG_INT_64 is not defined. ecpg/ecpg/typename.c --- sqlda_dynamic_type function ... #ifdef HAVE_LONG_LONG_INT_64 return ECPGt_long_long; #endif #ifdef HAVE_LONG_INT_64 return ECPGt_long; ... --- Is this fine if We define the above flag in pg_config.h.in like that? --- /* Define to 1 if the system has the type `long long int'. */ -#undef HAVE_LONG_LONG_INT +#define HAVE_LONG_LONG_INT 1 /* Define to 1 if `long long int' works and is 64 bits. */ -#undef HAVE_LONG_LONG_INT_64 +#define HAVE_LONG_LONG_INT_64 1 --- I am wondering that "long long int" not supported platform also using pg_config.h.in? Thanks and best regards, --- Dang Minh Huong NEC Solution Innovators, Ltd. http://www.nec-solutioninnovators.co.jp/en/
В списке pgsql-bugs по дате отправления: