diff --git a/4dev/tests/DB/CoreLibsDBIOTest.php b/4dev/tests/DB/CoreLibsDBIOTest.php
index ac6314d6..d85de03f 100644
--- a/4dev/tests/DB/CoreLibsDBIOTest.php
+++ b/4dev/tests/DB/CoreLibsDBIOTest.php
@@ -3692,7 +3692,7 @@ final class CoreLibsDBIOTest extends TestCase
*
* @return array
*/
- public function preparedProviderValue(): array
+ public function providerDbGetPrepareCursorValue(): array
{
// 1: query (can be empty for do not set)
// 2: stm name
@@ -3736,7 +3736,7 @@ final class CoreLibsDBIOTest extends TestCase
* test return prepare cursor errors
*
* @covers ::dbGetPrepareCursorValue
- * @dataProvider preparedProviderValue
+ * @dataProvider providerDbGetPrepareCursorValue
* @testdox prepared query $stm_name with $key expect error id $error_id [$_dataName]
*
* @param string $query
@@ -3769,6 +3769,94 @@ final class CoreLibsDBIOTest extends TestCase
);
}
+ /**
+ * Undocumented function
+ *
+ * @return array
+ */
+ public function providerDbPreparedCursorStatus(): array
+ {
+ return [
+ 'empty statement pararm' => [
+ 'query' => 'SELECT row_int, uid FROM table_with_primary_key',
+ 'stm_name' => 'test_stm_a',
+ 'check_stm_name' => '',
+ 'check_query' => '',
+ 'expected' => false
+ ],
+ 'different stm_name' => [
+ 'query' => 'SELECT row_int, uid FROM table_with_primary_key',
+ 'stm_name' => 'test_stm_b',
+ 'check_stm_name' => 'other_name',
+ 'check_query' => '',
+ 'expected' => 0
+ ],
+ 'same stm_name' => [
+ 'query' => 'SELECT row_int, uid FROM table_with_primary_key',
+ 'stm_name' => 'test_stm_c',
+ 'check_stm_name' => 'test_stm_c',
+ 'check_query' => '',
+ 'expected' => 1
+ ],
+ 'same stm_name and query' => [
+ 'query' => 'SELECT row_int, uid FROM table_with_primary_key',
+ 'stm_name' => 'test_stm_d',
+ 'check_stm_name' => 'test_stm_d',
+ 'check_query' => 'SELECT row_int, uid FROM table_with_primary_key',
+ 'expected' => 2
+ ],
+ 'same stm_name and different query' => [
+ 'query' => 'SELECT row_int, uid FROM table_with_primary_key',
+ 'stm_name' => 'test_stm_e',
+ 'check_stm_name' => 'test_stm_e',
+ 'check_query' => 'SELECT row_int, uid, row_int FROM table_with_primary_key',
+ 'expected' => 1
+ ],
+ 'insert query test' => [
+ 'query' => 'INSERT INTO table_with_primary_key (row_int, uid) VALUES ($1, $2)',
+ 'stm_name' => 'test_stm_f',
+ 'check_stm_name' => 'test_stm_f',
+ 'check_query' => 'INSERT INTO table_with_primary_key (row_int, uid) VALUES ($1, $2)',
+ 'expected' => 2
+ ]
+ ];
+ }
+
+ /**
+ * test cursor status for prepared statement
+ *
+ * @covers ::dbPreparedCursorStatus
+ * @dataProvider providerDbPreparedCursorStatus
+ * @testdox Check prepared $stm_name ($check_stm_name) status is $expected [$_dataName]
+ *
+ * @param string $query
+ * @param string $stm_name
+ * @param string $check_stm_name
+ * @param string $check_query
+ * @param bool|int $expected
+ * @return void
+ */
+ public function testDbPreparedCursorStatus(
+ string $query,
+ string $stm_name,
+ string $check_stm_name,
+ string $check_query,
+ bool|int $expected
+ ): void {
+ $db = new \CoreLibs\DB\IO(
+ self::$db_config['valid'],
+ self::$log
+ );
+ $db->dbPrepare($stm_name, $query);
+ // $db->dbExecute($stm_name);
+ $this->assertEquals(
+ $expected,
+ $db->dbPreparedCursorStatus($check_stm_name, $check_query),
+ 'check prepared stement cursor status'
+ );
+ unset($db);
+ }
+
// - schema set/get tests
// dbGetSchema, dbSetSchema
diff --git a/www/admin/class_test.db.php b/www/admin/class_test.db.php
index eb9ba2e6..a5537600 100644
--- a/www/admin/class_test.db.php
+++ b/www/admin/class_test.db.php
@@ -707,6 +707,17 @@ if (
} else {
print "[PGB] [3] pgb_sel_test_foo prepare OK
";
}
+$stm_status = $db->dbPreparedCursorStatus('');
+print "[PGB] Empty statement name: " . $log->prAr($stm_status) . "
";
+$stm_status = $db->dbPreparedCursorStatus('pgb_sel_test_foobar');
+print "[PGB] Prepared name not match status: $stm_status
";
+$stm_status = $db->dbPreparedCursorStatus('pgb_sel_test_foo');
+print "[PGB] Prepared name match status: $stm_status
";
+$stm_status = $db->dbPreparedCursorStatus('pgb_sel_test_foo', $q_prep);
+print "[PGB] prepared exists and query match status: $stm_status
";
+$stm_status = $db->dbPreparedCursorStatus('pgb_sel_test_foo', "SELECT * FROM test_foo");
+print "[PGB] prepared exists and query not match status: $stm_status
";
+
$db_pgb->dbClose();
# db write class test
diff --git a/www/admin/class_test.deprecated.helper.php b/www/admin/class_test.deprecated.helper.php
index 2c858be9..b629ff05 100644
--- a/www/admin/class_test.deprecated.helper.php
+++ b/www/admin/class_test.deprecated.helper.php
@@ -57,6 +57,51 @@ fclose($fp);
$out = \CoreLibs\DeprecatedHelper\Deprecated84::str_getcsv("A,B,C");
print "str_getcsv:
" . print_r($out, true) . ""; +/** + * temporary different CSV function, because fgetcsv seems to be broken on some systems + * (does not read out japanese text) + * + * @param string $string full line for csv split + * @param string $encoding optional, if given, converts string to the internal encoding + * before we do anything + * @param string $delimiter sepperate character, default ',' + * @param string $enclosure string line marker, default '"' + * @param string $flag INTERN | EXTERN. if INTERN uses the PHP function, else uses explode + * @return array