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;
}