function query($sql) { $ret = OA_Dal_Delivery_query($sql, 'rawDatabase'); if (!$ret) { OA_bucketPrintError('rawDatabase'); } return $ret; }
function OA_bucket_updateTable($tableName, $aQuery, $counter = 'count') { OA_bucketPrepareDb(); // just insert if (!empty($_GET['logMethod']) && $_GET['logMethod'] == 'insert') { return OA_bucketInsertTable($tableName, $aQuery, $counter); } // PgSQL stored procedures (update/insert/update) if (!empty($_GET['logMethod']) && $_GET['logMethod'] == 'proc') { $procQuery = OA_bucket_buildProcQuery($tableName, $aQuery, $counter); $result = OA_Dal_Delivery_query($procQuery, 'rawDatabase'); if (!$result) { OA_bucketPrintError('rawDatabase'); } return (bool) $result; } // MySQL ON DUPLICATE KEY UPDATE if (!empty($_GET['logMethod']) && $_GET['logMethod'] == 'duplicate') { $updateQuery = OA_bucket_buildUpdateQuery($tableName, $aQuery, $counter, true); $result = OA_Dal_Delivery_query($updateQuery, 'rawDatabase'); if (!$result) { OA_bucketPrintError('rawDatabase'); } return (bool) $result; } // Else, triple update/insert/update - for performance reasons if ($counter) { // first update $updateQuery = OA_bucket_buildUpdateQuery($tableName, $aQuery, $counter); $result = OA_Dal_Delivery_query($updateQuery, 'rawDatabase'); } else { $result = true; } if (!$counter || OA_bucket_affectedRows($result) <= 0) { if (!$result) { OA_bucketPrintError('rawDatabase'); } // insert (in case update didn't update any records) $insertQuery = OA_bucket_buildInsertQuery($tableName, $aQuery, $counter); $result = OA_Dal_Delivery_query($insertQuery, 'rawDatabase'); if (!$result) { OA_bucketPrintError('rawDatabase'); // second update (in case insert failed because concurrent thread inserted a record) $result = OA_Dal_Delivery_query($updateQuery, 'rawDatabase'); } } return (bool) $result; }