From 3f43c57024652e2a2fc718c574be327d6e8717d9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Gerg=C5=91=20Tisza?= Date: Sun, 16 Dec 2018 21:06:32 -0800 Subject: [PATCH] Fix sql.php --json behavior * return empty array when the query had no result (instead of falling back into non-JSON mode) * return JSON for write queries as well * retain legacy behavior in non-JSON mode for empty SELECTs, just in case somebody relied on it Change-Id: Iaefbb443650a395278d1cc9ab6aa668b13b217c9 --- maintenance/sql.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/maintenance/sql.php b/maintenance/sql.php index e8b7448104..dba4a223a7 100644 --- a/maintenance/sql.php +++ b/maintenance/sql.php @@ -177,19 +177,26 @@ class MwSql extends Maintenance { if ( !$res ) { // Do nothing return; - } elseif ( is_object( $res ) && $res->numRows() ) { + } elseif ( is_object( $res ) ) { $out = ''; + $rows = []; foreach ( $res as $row ) { $out .= print_r( $row, true ); $rows[] = $row; } if ( $this->hasOption( 'json' ) ) { $out = json_encode( $rows, JSON_PRETTY_PRINT ); + } elseif ( !$rows ) { + $out = 'Query OK, 0 row(s) affected'; } $this->output( $out . "\n" ); } else { $affected = $db->affectedRows(); - $this->output( "Query OK, $affected row(s) affected\n" ); + if ( $this->hasOption( 'json' ) ) { + $this->output( json_encode( [ 'affected' => $affected ], JSON_PRETTY_PRINT ) . "\n" ); + } else { + $this->output( "Query OK, $affected row(s) affected\n" ); + } } } -- 2.20.1