<?php

declare(strict_types=1);

$dsn = getenv('POC_DSN');
$user = getenv('POC_USER');
$password = getenv('POC_PASSWORD');
if (!$dsn || !$user || !$password) {
    fwrite(STDERR, "Missing isolated syntax-probe connection\n");
    exit(2);
}
$pdo = new PDO($dsn, $user, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$table = 'CODEX_DIALECT_POC_' . strtoupper(bin2hex(random_bytes(4)));
$check = $pdo->prepare('SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME=?');
$check->execute([$table]);
if ((int)$check->fetchColumn() !== 0) throw new RuntimeException('Probe table already exists');
$created = false;
try {
    $pdo->exec('CREATE TABLE "' . $table . '" (ID INT PRIMARY KEY, V_TEXT VARCHAR(40))');
    $created = true;
    $pdo->exec("INSERT INTO $table (ID,V_TEXT) VALUES (1,'first')");
    $probes = [
        'insert_ignore' => "INSERT IGNORE INTO $table (ID,V_TEXT) VALUES (1,'ignored')",
        'on_duplicate_key' => "INSERT INTO $table (ID,V_TEXT) VALUES (1,'updated') ON DUPLICATE KEY UPDATE V_TEXT=VALUES(V_TEXT)",
        'replace_into' => "REPLACE INTO $table (ID,V_TEXT) VALUES (1,'replaced')",
    ];
    $results = [];
    foreach ($probes as $name => $sql) {
        try {
            $pdo->exec($sql);
            $results[$name] = 'pass';
        } catch (Throwable $error) {
            $results[$name] = 'fail:' . $error->getCode();
        }
    }
    echo json_encode($results) . PHP_EOL;
} finally {
    if ($created) {
        $pdo->exec('DROP TABLE "' . $table . '"');
    }
}
