<?php
declare(strict_types=1);

// Nonproduction C metadata and pure constants; no catalog value or old row reads.
require __DIR__ . '/../parallel-ai-health-read-batch/c_readonly_preflight.php';
$stage = 'catalog_numeric_column_metadata';
$wanted = [
    ['ai', $ai, 'YOSHOP_DISHES',
        ['WEIGHT', 'ENERGY', 'CARBOHYDRATE', 'PROTEIN', 'FAT']],
    ['store', $store, 'YDY_DISHES', ['PRICE']],
];
$result = [];
foreach ($wanted as [$side, $pdo, $table, $columns]) {
    $stmt = $pdo->prepare('SELECT DATA_TYPE,DATA_PRECISION,DATA_SCALE,NULLABLE'
        . ' FROM USER_TAB_COLUMNS WHERE TABLE_NAME=? AND COLUMN_NAME=?');
    foreach ($columns as $column) {
        $stmt->execute([$table, $column]);
        $meta = $stmt->fetch(PDO::FETCH_ASSOC);
        if (!is_array($meta)) throw new RuntimeException('Catalog column unavailable');
        $meta = array_change_key_case($meta, CASE_UPPER);
        $result[$side][$column] = [
            'type' => strtoupper((string)$meta['DATA_TYPE']),
            'precision' => (int)$meta['DATA_PRECISION'],
            'scale' => (int)$meta['DATA_SCALE'],
            'nullable' => (string)$meta['NULLABLE'],
        ];
    }
}
$stage = 'pure_numeric_cast_types';
$decimal = $ai->query("SELECT CAST('123.45' AS DECIMAL(10,2)) FROM DUAL")
    ->fetchColumn();
$float = $store->query("SELECT CAST('123.45' AS FLOAT) FROM DUAL")
    ->fetchColumn();
echo json_encode(['status' => 'c-catalog-numeric-metadata',
    'columns' => $result,
    'pure_decimal_php_type' => gettype($decimal),
    'pure_float_php_type' => gettype($float),
    'catalog_row_values_read' => 0, 'writes' => 0],
    JSON_UNESCAPED_SLASHES), PHP_EOL;
