|
1 | 1 | -- ZSTAC-75319: Add normalizedModelName column for GPU spec dedup |
2 | 2 | CALL ADD_COLUMN('GpuDeviceSpecVO', 'normalizedModelName', 'VARCHAR(255)', 1, NULL); |
3 | 3 | CALL CREATE_INDEX('GpuDeviceSpecVO', 'idx_gpu_spec_normalized_model', 'normalizedModelName'); |
| 4 | + |
| 5 | +-- Add totalScore and endTime columns to ModelEvaluationTaskVO for ZQL sorting support |
| 6 | +-- Previously these values were only stored inside the opaque JSON TEXT field, |
| 7 | +-- making them invisible to ZQL ORDER BY queries. |
| 8 | +CALL ADD_COLUMN('ModelEvaluationTaskVO', 'totalScore', 'DOUBLE', 1, NULL); |
| 9 | +CALL ADD_COLUMN('ModelEvaluationTaskVO', 'endTime', 'TIMESTAMP', 1, NULL); |
| 10 | + |
| 11 | +-- Add indexes to support efficient sorting |
| 12 | +CALL CREATE_INDEX('ModelEvaluationTaskVO', 'idx_ModelEvaluationTaskVO_totalScore', 'totalScore'); |
| 13 | +CALL CREATE_INDEX('ModelEvaluationTaskVO', 'idx_ModelEvaluationTaskVO_endTime', 'endTime'); |
| 14 | + |
| 15 | +-- Backfill totalScore from opaque JSON for existing completed tasks |
| 16 | +UPDATE `zstack`.`ModelEvaluationTaskVO` |
| 17 | +SET `totalScore` = JSON_EXTRACT(`opaque`, '$.details.total_score') |
| 18 | +WHERE `opaque` IS NOT NULL |
| 19 | + AND `totalScore` IS NULL |
| 20 | + AND JSON_EXTRACT(`opaque`, '$.details.total_score') IS NOT NULL; |
| 21 | + |
| 22 | +-- Backfill endTime from opaque JSON for existing completed/failed tasks |
| 23 | +-- end_time format from Python agent: "MMM dd, yyyy hh:mm:ss a" (e.g. "Jan 01, 2025 10:30:00 AM") |
| 24 | +UPDATE `zstack`.`ModelEvaluationTaskVO` |
| 25 | +SET `endTime` = STR_TO_DATE( |
| 26 | + JSON_UNQUOTE(JSON_EXTRACT(`opaque`, '$.details.end_time')), |
| 27 | + '%b %d, %Y %h:%i:%s %p' |
| 28 | +) |
| 29 | +WHERE `opaque` IS NOT NULL |
| 30 | + AND `endTime` IS NULL |
| 31 | + AND JSON_EXTRACT(`opaque`, '$.details.end_time') IS NOT NULL |
| 32 | + AND JSON_UNQUOTE(JSON_EXTRACT(`opaque`, '$.details.end_time')) != ''; |
0 commit comments