RE: BUG #15080: ecpg on windows doesn't define HAVE_LONG_LONG_INT
Huong Dangminh <huo-dangminh@ys.jp.nec.com>
From: Huong Dangminh <huo-dangminh@ys.jp.nec.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Jonathan Allen <jallen@americansavingslife.com>,
Michael Meskes <meskes@postgresql.org>,
Andrew Gierth <andrew@tao11.riddles.org.uk>,
"pgsql-bugs@lists.postgresql.org" <pgsql-bugs@lists.postgresql.org>,
"Akio Iwaasa" <aki-iwaasa@vt.jp.nec.com>
Date: 2018-05-18T05:21:31Z
Lists: pgsql-bugs
Attachments
- ecpg_with_bigint_V2_test.patch (application/octet-stream) patch
- ecpg_with_bigint_V2.patch (application/octet-stream) patch
> From: Tom Lane [mailto:tgl@sss.pgh.pa.us] > It seems fairly unfortunate that this patch does not fix the problem for > as far back as MSVC has "long long" support. From what I can tell, we could > use _strtoi64 and _strtoui64 on older Windows versions. Thanks. You are right. We also should fix for older VS too. > 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? Thanks and best regards, --- Dang Minh Huong NEC Solution Innovators, Ltd. http://www.nec-solutioninnovators.co.jp/en/
Commits
-
Remove configure's check for nonstandard "long long" printf modifiers.
- b929614f5e86 11.0 landed
-
printf("%lf") is not portable, so omit the "l".
- 0aa97b86f902 9.3.24 landed
- fa2cfb962c05 10.5 landed
- e52cabff7054 9.4.19 landed
- c6e846446d17 11.0 landed
- 9c515f77d6cf 9.6.10 landed
- 29a4db65fbb7 9.5.14 landed
-
Support platforms where strtoll/strtoull are spelled __strtoll/__strtoull.
- 91f3bcc9e423 9.3.24 landed
- 8109f201da77 9.4.19 landed
- a5be529aaade 10.5 landed
- 7329af6b9ebf 9.5.14 landed
- 22d22e4bddf6 9.6.10 landed
- 06f66cff9e0b 11.0 landed
-
Arrange to supply declarations for strtoll/strtoull if needed.
- e9f475f991fb 9.3.24 landed
- c964c2147136 10.5 landed
- a6228128fc48 11.0 landed
- 95fef6e82a7d 9.5.14 landed
- 4ffd7909c63a 9.6.10 landed
- 023aa76e1952 9.4.19 landed
-
Hot-fix ecpg regression test for missing ecpg_config.h inclusion.
- d73857d5719e 9.3.24 landed
- 54ae787ca732 9.4.19 landed
- bc8656cf980e 9.5.14 landed
- 4ca492425cd9 9.6.10 landed
- e55a5516deee 10.5 landed
- 5e79405d8299 11.0 landed
-
Add some test coverage for ecpg's "long long" support.
- ec99e9aa110a 9.6.10 landed
- e75c832b29b1 9.4.19 landed
- e21085da56a9 10.5 landed
- dbccdd375b41 11.0 landed
- d9cbe9c9fce9 9.3.24 landed
- 9d6616708d3f 9.5.14 landed
-
Recognize that MSVC can support strtoll() and strtoull().
- f586f8638929 11.0 landed
- cf39aebf17c5 10.5 landed
- 63d3e787f954 9.3.24 landed
- 385f4acbf824 9.4.19 landed
- 25caeae8d279 9.6.10 landed
- 11a110595c72 9.5.14 landed
-
Fix up ecpg's configuration so it handles "long long int" in MSVC builds.
- fda3e6578676 10.4 landed
- f171cbe0d90e 9.5.13 landed
- 87b7e1e88772 9.3.23 landed
- 7ee8005ceddf 9.6.9 landed
- 51057feaa6bd 11.0 landed
- 49f9014c8c1e 9.4.18 landed