<?php
declare(strict_types=1);require __DIR__.'/connect.php';require __DIR__.'/schema.php';$check($dm&&$lane==='C','Only approved C target');$check(!is_file($runtime.'/ddl-rehearsal.json'),'No rehearsal replay');$table='CDX_STATUS_PREFLIGHT_11E70B';$constraint='CK_EQ_STATUS_TMP_11E70B';$check($q('SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_NAME=?',[$table])===[]&&$q('SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME=?',[$constraint])===[],'Temporary names absent');$source=$schema('YOSHOP_EQUIPMENT');$check(count($source['columns'])===12&&(int)$q('SELECT COUNT(*) n FROM yoshop_equipment')[0]['n']===0,'Business original remains empty12');$ddl=trim(file_get_contents(__DIR__.'/equipment-status-add.sql'));$check(hash_file('sha256',__DIR__.'/equipment-status-add.sql')==='f9439485eafc2c54acc59114d58c8aa1fe9c5dff825e179b0364070a9d6ef508','Root-proposed exact DDL bytes');$tmpSql=str_replace(['"YOSHOP_EQUIPMENT"','"CK_EQ_STATUS_U8_11E70B"'],['"'.$table.'"','"'.$constraint.'"'],$ddl);$journal=['status'=>'STARTED','business_DDL'=>0,'business_DML'=>0,'HTTP'=>0,'temporary_DDL'=>[],'cases'=>[]];$persist('ddl-rehearsal.json',$journal);$created=false;
try{$create='CREATE GLOBAL TEMPORARY TABLE "AIZHCT_APP"."'.$table.'" ("ID" INT) ON COMMIT DELETE ROWS';$journal['temporary_DDL'][]=['SQL'=>$create,'state'=>'STARTED'];$persist('ddl-rehearsal.json',$journal);$db->exec($create);$created=true;$journal['temporary_DDL'][0]['state']='SUCCESS';$journal['temporary_DDL'][]=['SQL'=>$tmpSql,'state'=>'STARTED'];$persist('ddl-rehearsal.json',$journal);$db->exec($tmpSql);$journal['temporary_DDL'][1]['state']='SUCCESS';$meta=$schema($table);$status=array_values(array_filter($meta['columns'],static function($c){return $c['column_name']==='STATUS';}));$check(count($status)===1&&$status[0]['data_type']==='SMALLINT'&&$status[0]['nullable']==='N'&&trim($status[0]['data_default'])==='1','Temporary exact STATUS contract');$check(in_array($constraint,array_column($meta['constraints'],'constraint_name'),true),'Named temporary CHECK exists');$journal['metadata']=$meta;$db->beginTransaction();$db->exec('INSERT INTO "AIZHCT_APP"."'.$table.'" ("ID") VALUES (1)');$check((int)$q('SELECT STATUS FROM "AIZHCT_APP"."'.$table.'" WHERE ID=1')[0]['status']===1,'Default1');$journal['cases'][]=['input'=>'omitted','expected'=>'1','passed'=>true];$s=$db->prepare('INSERT INTO "AIZHCT_APP"."'.$table.'" ("ID","STATUS") VALUES (?,?)');foreach([0,255] as $v){$s->execute([2+$v,$v]);$journal['cases'][]=['input'=>$v,'expected'=>'accepted','passed'=>true];}foreach([-1,256,null] as $v){$failed=false;try{$s->execute([1000,$v]);}catch(PDOException $e){$failed=true;$journal['cases'][]=['input'=>$v,'expected'=>'rejected','passed'=>true,'SQLSTATE'=>$e->getCode(),'driver_error'=>$e->errorInfo[1]??null];}$check($failed,'Temporary invalid range/NULL must reject');$check((int)$q('SELECT COUNT(*) n FROM "AIZHCT_APP"."'.$table.'"')[0]['n']===3,'Temporary rejected rows not inserted and connection healthy');}$db->rollBack();$check((int)$q('SELECT COUNT(*) n FROM "AIZHCT_APP"."'.$table.'"')[0]['n']===0,'Temporary rows rollback0');$journal['temporary_rows_rolled_back']=true;$journal['status']='PASSED';}
catch(Throwable $e){if($db->inTransaction())$db->rollBack();$journal['status']='STOPPED';$journal['failure']=['class'=>get_class($e),'message'=>$e->getMessage()];}
finally{if($created){$drop='DROP TABLE "AIZHCT_APP"."'.$table.'"';$journal['temporary_DDL'][]=['SQL'=>$drop,'state'=>'STARTED'];$persist('ddl-rehearsal.json',$journal);try{$db->exec($drop);$journal['temporary_DDL'][count($journal['temporary_DDL'])-1]['state']='SUCCESS';}catch(Throwable $e){$journal['cleanup_failure']=['class'=>get_class($e),'message'=>$e->getMessage()];$journal['status']='STOPPED';}}$journal['temporary_object_absent']=$q('SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_NAME=?',[$table])===[];$journal['business_original_schema_unchanged']=$schema('YOSHOP_EQUIPMENT')===$source;$journal['business_rows0']=(int)$q('SELECT COUNT(*) n FROM yoshop_equipment')[0]['n']===0;$persist('ddl-rehearsal.json',$journal);file_put_contents(__DIR__.'/ddl-rehearsal-C.json',json_encode($journal,JSON_PRETTY_PRINT));echo json_encode(['status'=>$journal['status'],'temporary_DDL'=>count($journal['temporary_DDL']),'temporary_cases'=>count($journal['cases']),'business_DDL'=>0,'business_DML'=>0,'HTTP'=>0,'temporary_object_absent'=>$journal['temporary_object_absent'],'business_original_schema_unchanged'=>$journal['business_original_schema_unchanged']]),"\n";}
exit($journal['status']==='PASSED'&&$journal['temporary_object_absent']&&$journal['business_original_schema_unchanged']?0:1);
