Hi Johannes,
> -----Original Message-----
> From: Johannes Schlüter [mailto:[email protected]]
> Sent: Monday, December 5, 2016 10:55 AM
> To: pecl-dev <[email protected]>
> Cc: Filip Janiszewski <[email protected]>; Darek Slusarczyk
> <[email protected]>; Andrey Hristov <[email protected]>; Anatol
> Belski <[email protected]>
> Subject: [PECL-DEV] New package: mysql_xdevapi
>
> Hi PECL community,
>
> I'd like to propose a new package mysql_xdevapi for PECL. Contrary to other
> mysqlnd PECL packages, which are just plugins with very little user-related
> surface, this is a new API for MySQL based on MySQL's new X protocol.
>
> Basic information on the API can be found here:
> http://dev.mysql.com/doc/x-devapi-userguide/en/
>
> The source is licensed under PHP License 3.01 and available as package on
> https://schlueters.de/mysql_xdevapi-1.0.0.tgz
>
> If nobody complains I'll put it up over the next few days.
>
> Anatol, we tested it on Windows, too. Could you try on the official PHP build
> host? We depend on Google's protof lib. Some hints about our way to build it
> are in the README.
>
Thanks for the ping. I've just checked the build locally, some question arise.
I had to add the following three lines to config.w32
ADD_FLAG("CFLAGS_BD_EXT_MYSQL_XDEVAPI_MESSAGES", "/D
ZEND_WIN32_KEEP_INLINE=1 /U ZEND_WIN32_FORCE_INLINE");
ADD_FLAG("CFLAGS_BD_EXT_MYSQL_XDEVAPI_XMYSQLND_CRUD_PARSERS",
"/D ZEND_WIN32_KEEP_INLINE=1 /U ZEND_WIN32_FORCE_INLINE");
ADD_FLAG("CFLAGS_BD_EXT_MYSQL_XDEVAPI_XMYSQLND", "/D
ZEND_WIN32_KEEP_INLINE=1 /U ZEND_WIN32_FORCE_INLINE");
The issue here with vc14 is, that otherwise the default option in PHP is
ZEND_WIN32_FORCE_INLINE which replaces "inline" with "__forceinline". While it
is ok for C oriented code, it generates wrong code for "inline namespace" in
C++. Please add these three lines to the config.w32. It's probably only an
issue with C++11, but the extension is only 7.1 compatible and we use vc14 for
that. AFM, while this issue is seldom, the solution looks more than suboptimal,
I'll look to fix it in master, if not in 7.1 already.
It otherwise turned out, that some parts unconditionally depend on Boost. It
was OK, when I've pointed to headers from 1.61.0, but strangely that was it. Is
it, that no actual Boost libs are required for linking? Otherwise, which Boost
version should be used? I could try first to use bins
https://sourceforge.net/projects/boost/files/boost-binaries/ , or prepare own
compatible builds otherwise.
It otherwise succeeded with protobuf 3.0.2, while seems there are some symbol
issues with 3.0.0. And the latest 3.1.0 is broken on Windows 64-bit, so
couldn't tell how it would be. Any version known to fit best here?
With this mentioned, the local build is ok.
A question to the testing - is the following the only required step?
INSTALL PLUGIN mysqlx SONAME 'mysqlx.dll';
As described here
https://dev.mysql.com/doc/refman/5.7/en/document-store-setting-up.html
Locally I've these only tests failing, default insecure server setup
========DIFF========
001+ '[HY000] php_network_getaddresses: getaddrinfo failed: No such host is
known. ' != '[HY000] php_network_getaddresses: getaddrinfo failed: Name or
service not known'
002+ Some expectation were not meet!
003+ Expected: 1111111111, result: 0111111111
========DONE========
FAIL mysqlx connection (success/fail)
[C:\php-sdk\php71\vc14\x64\php-src\ext\mysql_xdevapi\tests\001.phpt]
========DIFF========
001+ Warning: mysql_xdevapi\NodeTableSelect::execute(): [1365] Division by 0 in
C:\php-sdk\php71\vc14\x64\php-src\ext\mysql_xdevapi\tests\011.php on line 16
002+
003+ Warning: mysql_xdevapi\NodeTableSelect::execute(): [1365] Division by 0 in
C:\php-sdk\php71\vc14\x64\php-src\ext\mysql_xdevapi\tests\011.php on line 16
004+
005+ Warning: mysql_xdevapi\NodeTableSelect::execute(): [1365] Division by 0 in
C:\php-sdk\php71\vc14\x64\php-src\ext\mysql_xdevapi\tests\011.php on line 16
006+ '' != '3'
007+ Some expectation were not meet!
008+ Expected: 1, result: 0
========DONE========
FAIL mysqlx warnings
[C:\php-sdk\php71\vc14\x64\php-src\ext\mysql_xdevapi\tests\011.phpt]
Could you please clear out the protobuf and boost usage, mentioned earlier? I'd
go setup it on the buildhost then.
Thanks.
Anatol
--
PECL development discussion Mailing List (http://pecl.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php