From 7eace1013e9fe96060079bfeb287a899fcc0a59b Mon Sep 17 00:00:00 2001 From: Clemens Schwaighofer Date: Wed, 29 Mar 2023 09:55:09 +0900 Subject: [PATCH] DB\IO switch dbReturn, dbReturnParams to NO_CACHE as default Cache is never used, so to keep memory default lower, lets switch to NO_CACHE --- 4dev/tests/DB/CoreLibsDBIOTest.php | 77 +++++++++++++++++++--------- www/admin/class_test.db.dbReturn.php | 20 +++++++- www/lib/CoreLibs/DB/IO.php | 8 +-- 3 files changed, 76 insertions(+), 29 deletions(-) diff --git a/4dev/tests/DB/CoreLibsDBIOTest.php b/4dev/tests/DB/CoreLibsDBIOTest.php index 1a052255..0ee6e878 100644 --- a/4dev/tests/DB/CoreLibsDBIOTest.php +++ b/4dev/tests/DB/CoreLibsDBIOTest.php @@ -2142,7 +2142,7 @@ final class CoreLibsDBIOTest extends TestCase return [ // *** READ STEP BY STEP // default cache: USE_CACHE - 'valid select, default cache settings' => [ + 'valid select, default cache settings (NO_CACHE)' => [ // 0-3 $read_query, null, @@ -2156,9 +2156,7 @@ final class CoreLibsDBIOTest extends TestCase // check cursor_ext [ 'cursor' => 'PgSql\Result', - 'data' => [ - 0 => $row_a, - ], + 'data' => [], 'field_names' => [ 'row_int', 'uid' @@ -2173,9 +2171,9 @@ final class CoreLibsDBIOTest extends TestCase 'query' => $read_query, 'params' => [], 'read_rows' => 1, - 'cache_flag' => \CoreLibs\DB\IO::USE_CACHE, + 'cache_flag' => \CoreLibs\DB\IO::NO_CACHE, 'assoc_flag' => false, - 'cached' => true, + 'cached' => false, 'finished' => false, 'read_finished' => false, 'db_read_finished' => false, @@ -2190,10 +2188,7 @@ final class CoreLibsDBIOTest extends TestCase ], 'cursor' => [ 'cursor' => 'PgSql\Result', - 'data' => [ - 0 => $row_a, - 1 => $row_b, - ], + 'data' => [], 'field_names' => [ 'row_int', 'uid' @@ -2208,9 +2203,9 @@ final class CoreLibsDBIOTest extends TestCase 'query' => $read_query, 'params' => [], 'read_rows' => 2, - 'cache_flag' => \CoreLibs\DB\IO::USE_CACHE, + 'cache_flag' => \CoreLibs\DB\IO::NO_CACHE, 'assoc_flag' => false, - 'cached' => true, + 'cached' => false, 'finished' => false, 'read_finished' => true, 'db_read_finished' => true, @@ -2221,10 +2216,7 @@ final class CoreLibsDBIOTest extends TestCase 'data' => false, 'cursor' => [ 'cursor' => 1, - 'data' => [ - 0 => $row_a, - 1 => $row_b, - ], + 'data' => [], 'field_names' => [ 'row_int', 'uid' @@ -2239,9 +2231,9 @@ final class CoreLibsDBIOTest extends TestCase 'query' => $read_query, 'params' => [], 'read_rows' => 2, - 'cache_flag' => \CoreLibs\DB\IO::USE_CACHE, + 'cache_flag' => \CoreLibs\DB\IO::NO_CACHE, 'assoc_flag' => false, - 'cached' => true, + 'cached' => false, 'finished' => true, 'read_finished' => true, 'db_read_finished' => true, @@ -2811,13 +2803,50 @@ final class CoreLibsDBIOTest extends TestCase ], // *** READ AS LOOP // from here on a complex read all full tests - 'valid select, full read DEFAULT CACHE' => [ + 'valid select, full read, default cache settings (NO CACHE)' => [ $read_query, null, null, null, [$row_a, $row_b,], false, + [ + 'cursor' => 1, + 'data' => [], + 'field_names' => [ + 'row_int', + 'uid' + ], + 'field_types' => [ + 'int4', + 'varchar' + ], + 'num_fields' => 2, + 'num_rows' => 2, + 'pos' => 0, + 'query' => $read_query, + 'params' => [], + 'read_rows' => 2, + 'cache_flag' => \CoreLibs\DB\IO::NO_CACHE, + 'assoc_flag' => false, + 'cached' => false, + 'finished' => true, + 'read_finished' => true, + 'db_read_finished' => true, + ], + [], + '', + '', + $insert_query + ], + // USE CACHE + 'valid select, full read, USE CACHE' => [ + $read_query, + null, + \CoreLibs\DB\IO::USE_CACHE, + null, + [$row_a, $row_b,], + false, [ 'cursor' => 1, 'data' => [ @@ -2851,7 +2880,7 @@ final class CoreLibsDBIOTest extends TestCase $insert_query ], // READ_NEW - 'valid select, full read READ NEW' => [ + 'valid select, full read, READ NEW' => [ $read_query, null, \CoreLibs\DB\IO::READ_NEW, @@ -2891,7 +2920,7 @@ final class CoreLibsDBIOTest extends TestCase $insert_query ], // CLEAR_CACHE - 'valid select, full read CLEAR CACHE' => [ + 'valid select, full read, CLEAR CACHE' => [ $read_query, null, \CoreLibs\DB\IO::CLEAR_CACHE, @@ -2928,7 +2957,7 @@ final class CoreLibsDBIOTest extends TestCase '', $insert_query ], - 'valid select, full read NO CACHE' => [ + 'valid select, full read, NO CACHE' => [ $read_query, null, \CoreLibs\DB\IO::NO_CACHE, @@ -3070,7 +3099,7 @@ final class CoreLibsDBIOTest extends TestCase * @covers ::dbCursorPos * @covers ::dbCursorNumRows * @dataProvider dbReturnProvider - * @testdox dbReturn Read Frist $read_first_only only and cache $flag_cache and assoc $flag_assoc with (Warning: $warning/Error: $error) [$_dataName] + * @testdox dbReturn Read First $read_first_only only and cache $flag_cache and assoc $flag_assoc with (Warning: $warning/Error: $error) [$_dataName] * * @param string $query * @param array|null $params @@ -4358,7 +4387,7 @@ final class CoreLibsDBIOTest extends TestCase // NOTE if there are different INSERTS before the primary keys // will not match anymore. Must be updated by hand // IMPORTANT: if this is stand alone the primary key will not match and fail - $table_with_primary_key_id = 66; + $table_with_primary_key_id = 68; // 0: query + returning // 1: params // 1: pk name for db exec diff --git a/www/admin/class_test.db.dbReturn.php b/www/admin/class_test.db.dbReturn.php index 686e394b..8ca37fdb 100644 --- a/www/admin/class_test.db.dbReturn.php +++ b/www/admin/class_test.db.dbReturn.php @@ -67,12 +67,30 @@ $q_db_ret = "SELECT * FROM test_db_return ORDER BY uid"; RunningTime::hrRunningTime(); +$cache_flag = '[DEFAULT] NO_CACHE (0)'; +print "dbReturn '" . $cache_flag . "'/Default: " . $q_db_ret . "
"; +// Do twice +for ($i = 1; $i <= 6; $i++) { + $res = $db->dbReturn($q_db_ret); + print $i . ") " . $cache_flag . ": " + . "res: " . (is_bool($res) ? + "Bool: " . $db->log->prBl($res) : + (is_array($res) ? + "Array: " . $db->log->prBl(is_array($res)) : '{-}') + ) . ", " + . "cursor_ext:
" . Support::printAr(
+			SetVarType::setArray($db->dbGetCursorExt($q_db_ret))
+		) . "
"; + print "Run time: " . RunningTime::hrRunningTime() . "
"; +} +print "
"; + $cache_flag = 'USE_CACHE (0)'; print "dbReturn '" . $cache_flag . "'/Default: " . $q_db_ret . "
"; // SINGLE read on multi row return // Do twice for ($i = 1; $i <= 6; $i++) { - $res = $db->dbReturn($q_db_ret); + $res = $db->dbReturn($q_db_ret, $db::USE_CACHE); print $i . ") " . $cache_flag . ": " . "res: " . (is_bool($res) ? "Bool: " . $db->log->prBl($res) : diff --git a/www/lib/CoreLibs/DB/IO.php b/www/lib/CoreLibs/DB/IO.php index 8f651593..f54cc823 100644 --- a/www/lib/CoreLibs/DB/IO.php +++ b/www/lib/CoreLibs/DB/IO.php @@ -1821,7 +1821,7 @@ class IO * Wrapper for dbReturnParams * * @param string $query Query string - * @param int $cache reset status: default: USE_CACHE + * @param int $cache reset status: default: NO_CACHE * USE_CACHE/0: normal read from cache on second run * READ_NEW/1: write to cache, clean before new run * CLEAR_CACHE/2: write cache, clean after finished @@ -1833,7 +1833,7 @@ class IO */ public function dbReturn( string $query, - int $cache = self::USE_CACHE, + int $cache = self::NO_CACHE, bool $assoc_only = false ): array|false { return $this->dbReturnParams($query, [], $cache, $assoc_only); @@ -1856,7 +1856,7 @@ class IO * * @param string $query Query string * @param array $params Query parameters - * @param int $cache reset status: default: USE_CACHE + * @param int $cache reset status: default: NO_CACHE * USE_CACHE/0: normal read from cache on second run * READ_NEW/1: write to cache, clean before new run * CLEAR_CACHE/2: write cache, clean after finished @@ -1868,7 +1868,7 @@ class IO public function dbReturnParams( string $query, array $params = [], - int $cache = self::USE_CACHE, + int $cache = self::NO_CACHE, bool $assoc_only = false ): array|false { $this->__dbErrorReset();