BASE . LOG, 'file_id' => $LOG_FILE_ID, // add file date 'print_file_date' => true, // set debug and print flags 'debug_all' => $DEBUG_ALL ?? false, 'echo_all' => $ECHO_ALL ?? false, 'print_all' => $PRINT_ALL ?? false, ]); $basic = new CoreLibs\Basic($log); $db = new CoreLibs\Admin\Backend(DB_CONFIG, $log); $db->log->debug('START', '=============================>'); // NEXT STEP // $basic = new CoreLibs\Basic(); // change __construct // add object $logger // add $this->log = $logger; // $db = new CoreLibs\DB\IO(DB_CONFIG, $basic->log); print "TEST CLASS: DB"; print ""; print '
Class Test Master
'; print "LOGFILE NAME: " . $db->log->getSetting('log_file_name') . "
"; print "LOGFILE ID: " . $db->log->getSetting('log_file_id') . "
"; print "DBINFO: " . $db->dbInfo() . "
"; echo "DB_CONFIG_SET constant:
" . print_r(DB_CONFIG, true) . "

"; // DB client encoding print "DB Client encoding: " . $db->dbGetEncoding() . "
"; while (is_array($res = $db->dbReturn("SELECT * FROM max_test", DbIo::USE_CACHE, true))) { print "TIME: " . $res['time'] . "
"; } print "CACHED DATA:
" . print_r($db->cursor_ext, true) . "

"; while (is_array($res = $db->dbReturn("SELECT * FROM max_test"))) { print "[CACHED] TIME: " . $res['time'] . "
"; } // alternate check for valid data // while (($res = $db->dbReturn("SELECT * FROM max_test")) !== false) { // print "[CACHED] TIME: " . $res['time'] . "
"; // } print "
";

// truncate test_foo table before testing
print "TRUNCATE test_foo
"; $query = "TRUNCATE test_foo"; $db->dbExec($query); print "TRUNCATE test_foobar
"; $query = "TRUNCATE test_foobar"; $db->dbExec($query); $status = $db->dbExec("INSERT INTO test_foo (test) VALUES ('FOO TEST " . time() . "') RETURNING test"); print "DIRECT INSERT STATUS: " . Support::printToString($status) . "| " . "DB OBJECT:
" . print_r($status, true) . "
| " . "PRIMARY KEY: " . $db->dbGetInsertPK() . " | " . "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | " . "RETURNING EXT[test]: " . print_r($db->dbGetReturningExt('test'), true) . " | " . "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "
"; // should throw deprecated error // $db->getReturningExt(); print "DIRECT INSERT PREVIOUS INSERTED: " . print_r($db->dbReturnRow("SELECT test_foo_id, test FROM test_foo " . "WHERE test_foo_id = " . $db->dbGetInsertPK()), true) . "
"; // PREPARED INSERT $db->dbPrepare("ins_test_foo", "INSERT INTO test_foo (test) VALUES ($1) RETURNING test"); $status = $db->dbExecute("ins_test_foo", array('BAR TEST ' . time())); print "PREPARE INSERT[ins_test_foo] STATUS: " . Support::printToString($status) . " | " . "PRIMARY KEY: " . $db->dbGetInsertPK() . " | " . "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | " . "RETURNING RETURN: " . print_r($db->dbGetReturningArray(), true) . "
"; print "PREPARE INSERT PREVIOUS INSERTED: " . print_r($db->dbReturnRow("SELECT test_foo_id, test FROM test_foo " . "WHERE test_foo_id = " . $db->dbGetInsertPK()), true) . "
"; // returning test with multiple entries // $status = $db->db_exec( // "INSERT INTO test_foo (test) VALUES " // . "('BAR 1 " . time() . "'), " // . "('BAR 2 " . time() . "'), " // . "('BAR 3 " . time() . "') " // . "RETURNING test_foo_id" // ); $status = $db->dbExec( "INSERT INTO test_foo (test) VALUES " . "('BAR 1 " . time() . "'), " . "('BAR 2 " . time() . "'), " . "('BAR 3 " . time() . "') " . "RETURNING test_foo_id, test" ); print "DIRECT MULTIPLE INSERT WITH RETURN STATUS: " . Support::printToString($status) . " | " . "PRIMARY KEYS: " . print_r($db->dbGetInsertPK(), true) . " | " . "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | " . "RETURNING EXT[test]: " . print_r($db->dbGetReturningExt('test'), true) . " | " . "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "
"; // no returning, but not needed ; $status = $db->dbExec("INSERT INTO test_foo (test) VALUES ('FOO; TEST " . time() . "');"); print "DIRECT INSERT NO RETURN STATUS: " . Support::printToString($status) . " | " . "PRIMARY KEY: " . $db->dbGetInsertPK() . " | " . "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | " . "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "
"; $last_insert_pk = $db->dbGetInsertPK(); // is_array read test $q = "SELECT test_foo_id, test FROM test_foo WHERE test_foo_id = " . $last_insert_pk; if (is_array($s_res = $db->dbReturnRow($q)) && !empty($s_res['test'])) { print "WE HAVE DATA FOR: " . $last_insert_pk . " WITH: " . $s_res['test'] . "
"; } // UPDATE WITH RETURNING $status = $db->dbExec("UPDATE test_foo SET test = 'SOMETHING DIFFERENT' " . "WHERE test_foo_id = " . $last_insert_pk . " RETURNING test"); print "UPDATE WITH PK " . $last_insert_pk . " RETURN STATUS: " . Support::printToString($status) . " | " . "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | " . "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "
"; // INSERT WITH NO RETURNING $status = $db->dbExec("INSERT INTO test_foobar (type, integer) VALUES ('WITH DATA', 123)"); print "INSERT WITH NO PRIMARY KEY NO RETURNING STATUS: " . Support::printToString($status) . " | " . "PRIMARY KEY: " . $db->dbGetInsertPK() . " | " . "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | " . "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "
"; $status = $db->dbExec("INSERT INTO test_foobar (type, integer) VALUES ('WITH DATA', 123) RETURNING type, integer"); print "INSERT WITH NO PRIMARY KEY WITH RETURNING STATUS: " . Support::printToString($status) . " | " . "PRIMARY KEY: " . $db->dbGetInsertPK() . " | " . "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | " . "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "
"; print "
"; // READ PREPARE if ( $db->dbPrepare( 'sel_test_foo', "SELECT test_foo_id, test, some_bool, string_a, number_a, number_a_numeric, some_time " . "FROM test_foo ORDER BY test_foo_id DESC LIMIT 5" ) === false ) { print "Error in sel_test_foo prepare
"; } else { $max_rows = 6; // do not run this in dbFetchArray directly as // dbFetchArray(dbExecute(...)) // this will end in an endless loop $cursor = $db->dbExecute('sel_test_foo', []); $i = 1; while (($res = $db->dbFetchArray($cursor, true)) !== false) { print "DB PREP EXEC FETCH ARR: " . $i . ":
" . print_r($res, true) . "

"; $i++; } } # db write class test $table = 'test_foo'; print "TABLE META DATA: " . DgS::printAr($db->dbShowTableMetaData($table)) . "
"; // insert first, then use primary key to update $primary_key = ''; # unset $db_write_table = ['test', 'string_a', 'number_a', 'some_bool']; $object_fields_not_touch = []; $object_fields_not_update = []; $data = [ 'test' => 'dbWriteDataExt: BOOL TEST SOMETHING ' . time(), 'string_a' => 'SOME TEXT', 'number_a' => 5 ]; $primary_key = $db->dbWriteDataExt( $db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data ); print "Wrote to DB tabel $table with data " . print_r($data, true) . " and got primary key $primary_key
"; $data = [ 'test' => 'dbWriteDataExt: BOOL TEST ON ' . time(), 'string_a' => '', 'number_a' => 0, 'some_bool' => 1 ]; $primary_key = $db->dbWriteDataExt( $db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data ); print "Wrote to DB tabel $table with data " . print_r($data, true) . " and got primary key $primary_key
"; $data = [ 'test' => 'dbWriteDataExt: BOOL TEST OFF ' . time(), 'string_a' => null, 'number_a' => null, 'some_bool' => 0 ]; $primary_key = $db->dbWriteDataExt( $db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data ); print "Wrote to DB tabel $table with data " . print_r($data, true) . " and got primary key $primary_key
"; $data = [ 'test' => 'dbWriteDataExt: BOOL TEST UNSET ' . time() ]; $primary_key = $db->dbWriteDataExt( $db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data ); print "Wrote to DB tabel $table with data " . print_r($data, true) . " and got primary key $primary_key
"; // return Array Test $query = "SELECT type, sdate, integer FROM foobar"; $data = $db->dbReturnArray($query, true); print "Full foobar list:
" . print_r($data, true) . "

"; # async test queries /* $db->dbExecAsync("SELECT test FROM test_foo, (SELECT pg_sleep(10)) as sub WHERE test_foo_id IN (27, 50, 67, 44, 10)"); echo "WAITING FOR ASYNC: "; $chars = array('|', '/', '-', '\\'); while (($ret = $db->dbCheckAsync()) === true) { if ((list($_, $char) = each($chars)) === FALSE) { reset($chars); list($_, $char) = each($chars); } print $char; sleep(1); flush(); } print "
END STATUS: " . $ret . "
"; // while ($res = $db->dbFetchArray($ret)) while ($res = $db->dbFetchArray()) { echo "RES: " . $res['test'] . "
"; } # test async insert $db->dbExecAsync("INSERT INTO test_foo (Test) VALUES ('ASYNC TEST " . time() . "')"); echo "WAITING FOR ASYNC INSERT: "; while (($ret = $db->dbCheckAsync()) === true) { print " . "; sleep(1); flush(); } print "
END STATUS: " . $ret . " | PK: " . $db->insert_id . "
"; print "ASYNC PREVIOUS INSERTED: " . print_r( $db->dbReturnRow("SELECT test_foo_id, test FROM test_foo WHERE test_foo_id = " . $db->insert_id), true ) . "
"; */ $to_db_version = '9.1.9'; print "VERSION DB: " . $db->dbVersion() . "
"; print "DB Version smaller $to_db_version: " . $db->dbCompareVersion('<' . $to_db_version) . "
"; print "DB Version smaller than $to_db_version: " . $db->dbCompareVersion('<=' . $to_db_version) . "
"; print "DB Version equal $to_db_version: " . $db->dbCompareVersion('=' . $to_db_version) . "
"; print "DB Version bigger than $to_db_version: " . $db->dbCompareVersion('>=' . $to_db_version) . "
"; print "DB Version bigger $to_db_version: " . $db->dbCompareVersion('>' . $to_db_version) . "
"; /* $q = "Select * from test_foo"; $test_foo = $db->dbExecAsync($q); print "[ERR] Query: " . $q . "
"; print "[ERR] RESOURCE: $test_foo
"; while (($ret = $db->dbCheckAsync()) === true) { print "[ERR]: $ret
"; sleep(5); } */ // search path check $q = "SHOW search_path"; $cursor = $db->dbExec($q); $data = $db->dbFetchArray($cursor)['search_path']; print "RETURN DATA FOR search_path: " . $data . "
"; // print "RETURN DATA FOR search_path: " . DgS::printAr($data) . "
"; // insert something into test.schema_test and see if we get the PK back $status = $db->dbExec( "INSERT INTO test.schema_test (contents, id) VALUES " . "('TIME: " . time() . "', " . rand(1, 10) . ")" ); print "OTHER SCHEMA INSERT STATUS: " . Support::printToString($status) . " | PK NAME: " . $db->dbGetInsertPKName() . ", PRIMARY KEY: " . $db->dbGetInsertPK() . "
"; print "NULL TEST DB READ
"; $q = "SELECT uid, null_varchar, null_int FROM test_null_data WHERE uid = 'A'"; $res = $db->dbReturnRow($q); var_dump($res); print "RES: " . DgS::printAr($res) . "
"; print "ISSET: " . isset($res['null_varchar']) . "
"; print "EMPTY: " . empty($res['null_varchar']) . "
"; // error message print $log->printErrorMsg(); print ""; // __END__