db-command icon indicating copy to clipboard operation
db-command copied to clipboard

SQL mode compat logic is missing for SQL from STDIN

Open schlessera opened this issue 5 years ago • 2 comments

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.

schlessera avatar Apr 18 '20 12:04 schlessera

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

MaybeThisIsRu avatar Aug 05 '21 05:08 MaybeThisIsRu

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.

schlessera avatar Aug 05 '21 15:08 schlessera