wp-cli / db-command

Performs basic database operations using credentials stored in wp-config.php.
MIT License
71 stars 58 forks source link

SQL mode compat logic is missing for SQL from STDIN #171

Open schlessera opened 4 years ago

schlessera commented 4 years ago

Bug Report

Describe the current, buggy behavior

For #168 we've added logic to emulate WordPress Core's SQL mode compatibility hacks for the commands where we run the mysql binary directly.

PR #170 adds this for the db import command, except for the use case where we have mysql feed directly from STDIN.

For this use case, right now, WordPress Core is not compatible with MySQL 5.7+ because of its incompatible default SQL modes.

Describe what you would expect as the correct outcome

WP-CLI should behave similar to WordPress Core in all scenarios, even when having SQL code be fed to db import via STDIN.

This should not jus read the entire STDIN into memory, as that can lead to out-of-memory errors or create issues over networks.

Provide a possible solution

This might be doable (read: needs a POC, as unsure) by using proc_open to create a new process and handing it a pipe as STDIN that we control from PHP.

Then we could fwrite() our compact code into the pipe first, and then stream_copy_contents from actual STDIN into that pipe.

MaybeThisIsRu commented 3 years ago

Since the related PR has been merged, should this be closed?

schlessera commented 3 years ago

No, this problem is still present. As the issue above mentions:

PR #170 adds this for the db import command, except for the use case where we have mysql feed directly from STDIN.