Der Update-Join-Effekt ist im ersten Durchlauf von „select“ nicht sichtbar
Posted: 15 Jan 2025, 16:21
Ich habe dieses sehr seltsame Verhalten bei der Verwendung von pglite (PostgreSQL Version 16) in Firefox, wo ich ein UPDATE JOIN und dann ein SELECT ausführe, das beim ersten Mal nicht die durch das UPDATE vorgenommene Änderung widerspiegelt, aber wenn ich es ausführe es ein zweites Mal tut es!
Ist mein UPDATE.
Ist mein SELECT.
Code: Select all
async function handleDeselectElement()
{
console.assert(g.parentNode.tagName=='svg');
const idbox = parseInt(g.id.substring('g_'.length));
const selectedContextIndex = parseInt(g.parentElement.id);
const xForms = g.transform.baseVal;// an SVGTransformList
const firstXForm = xForms.getItem(0); //an SVGTransform
console.assert (firstXForm.type == SVGTransform.SVG_TRANSFORM_TRANSLATE);
const translateX = firstXForm.matrix.e;
const translateY = firstXForm.matrix.f;
const ret = await db.query(`
UPDATE translation t
SET x=${translateX}, y=${translateY}
FROM rectangle r
WHERE t.idrectangle=r.idrectangle
AND r.idbox=${idbox}
RETURNING *
`);
console.log(ret);
await enforce_bounding_rectangle(selectedContextIndex);
const links = await compute_links(selectedContextIndex);
// mycontexts.contexts[selectedContextIndex].links = await links;
document.getElementById(`links_${selectedContextIndex}`).innerHTML = drawLinks(links);
}
Code: Select all
upload.addEventListener("click", async (evt)=>{
const ret = await db.query(`
SELECT json_build_object(
'diagram', (SELECT json_agg(row_to_json(diagram))::json FROM diagram),
'box', (SELECT json_agg(row_to_json(box))::json FROM box),
'field', (SELECT coalesce(json_agg(row_to_json(field))::json, '[]'::json) FROM field),
'value', (SELECT coalesce(json_agg(row_to_json(value))::json, '[]'::json) FROM value),
'link', (SELECT coalesce(json_agg(row_to_json(link))::json, '[]'::json) FROM link),
'tag', (SELECT json_agg(row_to_json(tag))::json FROM tag),
'message_tag', (SELECT coalesce(json_agg(row_to_json(message_tag))::json, '[]'::json) FROM message_tag),
'graph', (SELECT coalesce(json_agg(row_to_json(graph))::json, '[]'::json) FROM graph),
'rectangle', (SELECT json_agg(row_to_json(rectangle))::json FROM rectangle),
'translation', (SELECT json_agg(row_to_json(translation))::json FROM translation),
'polyline', (SELECT coalesce(json_agg(row_to_json(polyline))::json, '[]'::json) FROM polyline)
);
`);
const doc = ret.rows[0].json_build_object;
const json_doc = JSON.stringify(doc);
console.log(json_doc);
const response = await fetch(
//"https://www.diskloud.fr:3000/linkedboxdraw/post",
"https://109.11.33.79:8443/linkedboxdraw/post",
{
method: "POST",
body: json_doc,
headers: {"Content-Type": "application/json"}
}
);
console.log(response.status);
});