| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
| |
Closes GH-6770
|
|
|
|
|
|
|
| |
When row data split across multiple packets, allocate a temporary
buffer that can be reallocated, and only copy into the row buffer
pool arena once we know the final size. This avoids quadratic
memory usage for very large results.
|
|
|
|
|
|
|
|
|
| |
FilesystemIterator::FOLLOW_SYMLINKS is currently treated as a directory
key mode flag, even though it does not change the way that the key
during iteration is set. To address this, FOLLOW_SYMLINKS has been
converted into an OTHER flag.
Closes GH-6695.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* allow the user to specify a folder where files that can be sent
via LOAD DATA LOCAL can exist
* add mysqli.local_infile_directory for mysqli
(ignored if mysqli.allow_local_infile is enabled)
* add PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY for pdo_mysql
(ignored if PDO::MYSQL_ATTR_LOCAL_INFILE is enabled)
* add related tests
* fixes for building with libmysql 8.x
* small improvement in existing tests
* update php.ini-[development|production] files
Closes GH-6448.
Co-authored-by: Nikita Popov <nikic@php.net>
|
|
|
|
|
|
| |
[ci skip]
Signed-off-by: Anatol Belski <ab@php.net>
|
|
|
|
|
| |
We should handle the case where the method doesn't exist, and
where it is not visible the same way.
|
|
|
|
|
|
|
| |
For fake closures, we need to share static variables with the
original function, not work on a separate copy. Calling a function
through Closure::fromCallable() should have the same behavior as
calling it directly.
|
|
|
|
|
|
|
|
|
|
| |
This is a new transparent technology that eliminates overhead of PHP class inheritance.
PHP classes are compiled and cached (by opcahce) separately, however their "linking" was done at run-time - on each request. The process of "linking" may involve a number of compatibility checks and borrowing methods/properties/constants form parent and traits. This takes significant time, but the result is the same on each request.
Inheritance Cache performs "linking" for unique set of all the depending classes (parent, interfaces, traits, property types, method types involved into compatibility checks) once and stores result in opcache shared memory. As a part of the this patch, I removed limitations for immutable classes (unresolved constants, typed properties and covariant type checks). So now all classes stored in opcache are "immutable". They may be lazily loaded into process memory, if necessary, but this usually occurs just once (on first linking).
The patch shows 8% improvement on Symphony "Hello World" app.
|
|
|
|
|
|
|
|
|
| |
Rename MYSQLI_REFRESH_SLAVE to MYSQLI_REFRESH_REPLICA in line with
upstream change in MySQL. The old name is retained for
backwards-compatibility reasons, and may be deprecated/removed in
the future.
Closes GH-6632.
|
|
|
|
| |
Signed-off-by: Anatol Belski <ab@php.net>
|
|
|
|
| |
Signed-off-by: Anatol Belski <ab@php.net>
|
| |
|
|
|
|
|
|
|
| |
Return integers and floats as native types if possible. As usual,
the old behavior can be restored by enabling ATTR_STRINGIFY_FETCHES.
Fixes bug #38334.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of requiring the type to be determined in advance by the
describer function and then requiring get_col to return a buffer
of appropriate type, allow get_col to return an arbitrary zval.
See UPGRADING.INTERNALS for a more detailed description of the
change.
This makes the result fetching simpler, more efficient and more
flexible. The general possibility already existed via the special
PDO_PARAM_ZVAL type, but the usage was very inconvenient and/or
inefficient. Now it's possible to easily implement behavior like
"return int if it fits, otherwise string" and to avoid any kind
of complex management of temporary buffers.
This also fixes bug #40913 (our second highest voted bug of all
time, for some reason). PARAM_LOB result bindings will now
consistently return a stream resource, independently of the used
database driver.
I've tried my best to update all PDO drivers for this change, but
some of the changes may be broken, as I cannot test or even build
some of these drivers (in particular PDO dblib and PDO oci).
Fixes are appreciated -- a working CI setup would be even more
appreciated ;)
|
|
|
|
|
|
|
|
| |
There doesn't seem to be any compelling reason to implement this
in mysqlnd rather than mysqli. It's just a loop over fetch_into.
This makes the function available under libmysqlclient as well,
and thus fixes bug #79372.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fills out the array/object-property insert helpers for zend_array, zend_object, and zend_reference.
This adds the following matrix of 18 APIs
add_next_index_T()
add_index_T()
add_assoc_T()
add_assoc_T_ex()
add_property_T()
add_property_T_ex()
Where T in array, object, reference
Converted internal callsites currently doing an explicit object wrap.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
`configure` for `phpize` builds on Windows creates Makefile and
config.pickle.h and includes the latter via the command line option
`/FI`. That implies that config.pickle.h is always included before
config.w32.h, which means that standard definitions always override
extension specific definitions, while it should be the other way round.
Therefore, we change the inclusion order by including config.pickle.h
at the end of config.w32.h if the former is available, and also make
sure to avoid any potential C4005 warnings by `#undef`ining the macros
before defining them.
Closes GH-6269.
|
| |
|
|
|
|
| |
Signed-off-by: Anatol Belski <ab@php.net>
|
| |
|
|\
| |
| |
| |
| |
| |
| | |
* PHP-8.0:
Fixed support for named parameters (Zend/tests/named_params/references.phpt)
Update NEWS for 8.0.0RC4
Update NEWS for PHP 8.0.0RC3
|
| | |
|
| | |
|
| |\
| | |
| | |
| | |
| | | |
* PHP-7.4:
Fix #80268: loadHTML() truncates at NUL bytes
|
| | |\
| | | |
| | | |
| | | |
| | | | |
* PHP-7.3:
Fix #80268: loadHTML() truncates at NUL bytes
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
libxml2 has no particular issues parsing HTML strings with NUL bytes;
these just cause truncation of the current text content, but parsing
continues generally. Since `::loadHTMLFile()` already supports NUL
bytes, `::loadHTML()` should as well.
Note that this is different from XML, which does not allow any NUL
bytes.
Closes GH-6368.
|
| |\ \ \
| | |/ /
| | | |
| | | |
| | | | |
* PHP-7.4:
Fix #62474: com_event_sink crashes on certain arguments
|
| | |\ \
| | | |/
| | | |
| | | |
| | | | |
* PHP-7.3:
Fix #62474: com_event_sink crashes on certain arguments
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We have to make sure that the variant is of type `VT_DISPATCH` before
we access it as such.
Closes GH-6372.
|
| |\ \ \
| | |/ /
| | | |
| | | |
| | | | |
* PHP-7.4:
Fix #80258: Windows Deduplication Enabled, randon permission errors
|
| | |\ \
| | | |/
| | | |
| | | |
| | | | |
* PHP-7.3:
Fix #80258: Windows Deduplication Enabled, randon permission errors
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
A recent bug fix regarding symlinks claimed:
> After resolving reparse points, the path still may be a reparse
> point; in that case we have to resolve that reparse point as well.
While that is basically correct, some reparse points may point to
inaccessible system folders (e.g. `IO_REPARSE_TAG_DEDUP` points to
"\System Volume Information"). Since we don't know details about
arbitrary reparse points, and are mainly interested in nested symlinks,
we take a step back, and only resolve `IO_REPARSE_TAG_SYMLINK` for now.
Close GH-6354.
|
| |\ \ \
| | |/ /
| | | |
| | | |
| | | | |
* PHP-7.4:
Fix #80280: ADD_EXTENSION_DEP() fails for ext/standard and ext/date
|
| | |\ \
| | | |/
| | | |
| | | |
| | | | |
* PHP-7.3:
Fix #80280: ADD_EXTENSION_DEP() fails for ext/standard and ext/date
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
`ADD_EXTENSION_DEP()` relies on the `PHP_<extname>` config variables to
be set to `"yes"`, and since the standard and date extension are always
enabled, we define the respective variables uncoditionally.
Closes GH-6383.
|
| | | |
| | | |
| | | |
| | | | |
Apply patch which was attached to the bug in July 2018
|
| | | |
| | | |
| | | |
| | | | |
Apply patch which was attached to the bug in July 2018
|
| | | |
| | | |
| | | |
| | | | |
Apply patch which was attached to the bug in July 2018
|
| |\ \ \
| | |/ /
| | | |
| | | |
| | | | |
* PHP-7.4:
Fix #80242: imap_mail_compose() segfaults for multipart with rfc822
|
| | |\ \
| | | |/
| | | |
| | | |
| | | | |
* PHP-7.3:
Fix #80242: imap_mail_compose() segfaults for multipart with rfc822
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
libc-client expects `TYPEMESSAGE` with an explicit subtype of `RFC822`
to have a `nested.msg` (otherwise there will be a segfault during
free), but not to have any `contents.text.data` (this will leak
otherwise).
Closes GH-6345.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Remove the transfer_encoding stream filter immediately when we
destroy the old stream, to make sure it doesn't get attached to
the new stream.
|
| |\ \ \
| | |/ /
| | | |
| | | |
| | | | |
* PHP-7.4:
Properly fix #80220
|
| | |\ \
| | | |/
| | | |
| | | |
| | | | |
* PHP-7.3:
Properly fix #80220
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The original fix for that bug[1] broke the formerly working composition
of message/rfc822 messages, which results in a segfault when freeing
the message body now. While `imap_mail_compose()` does not really
support composition of meaningful message/rfc822 messages (although
libc-client appears to support that), some code may still use this to
compose partial messages, and using string manipulation to create the
final message.
The point is that libc-client expects `TYPEMESSAGE` with an explicit
subtype of `RFC822` to have a `nested.msg` (otherwise there will be a
segfault during free), but not to have any `contents.text.data` (this
will leak otherwise).
[1] <http://git.php.net/?p=php-src.git;a=commit;h=0d022ddf03c5fabaaa22e486d1e4a367ed9170a7>
Closes GH-6343.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
OCB mode ciphers were already exposed to openssl_encrypt/decrypt,
but misbehaved, because they were not treated as AEAD ciphers.
From that perspective, OCB should be treated the same way as GCM.
In OpenSSL 1.1 the necessary controls were unified under
EVP_CTRL_AEAD_* (and OCB is only supported since OpenSSL 1.1).
Closes GH-6337.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This was a copy&paste mistake, target_block was used where
follow_block was intended. Also update copy&paste mistakes in
the comments.
|