Closed ghost closed 2 years ago
https://github.com/OIV-NL-QGIS/QGIS_project/issues/238
Dit was een issue maar zou verholpen moeten zijn met via bovenstaand script.... Pas als er een "historie" werd aangemaakt liet de view hem zien, maar dat is opgelost.
De JOIN moest een LEFT JOIN zijn en dit is in het script aangepast
Gegenereerde DDL:
CREATE OR REPLACE VIEW objecten.object_isolijnen AS
SELECT l.id,
l.geom,
l.hoogte,
l.omschrijving,
l.object_id,
b.formelenaam,
''::text AS applicatie,
b.datum_geldig_vanaf,
b.datum_geldig_tot,
part.typeobject
FROM objecten.isolijnen l
JOIN objecten.object b ON l.object_id = b.id
LEFT JOIN (SELECT h.object_id,
h.typeobject
FROM objecten.historie h
JOIN (SELECT historie.object_id,
max(historie.datum_aangemaakt) AS maxdatetime
FROM objecten.historie
GROUP BY historie.object_id) hist
ON h.object_id = hist.object_id AND h.datum_aangemaakt = hist.maxdatetime) part
ON b.id = part.object_id
WHERE l.datum_deleted IS NULL;
alter table objecten.object_isolijnen
owner to oiv_admin;
grant select on objecten.object_isolijnen to oiv_read;
grant delete, insert, update on objecten.object_isolijnen to oiv_write;
Dat komt dus overeen met: https://github.com/OIV-NL-QGIS/IMROI_database/blob/master/migratiescripts/migratie_3.3.9-beta3-3.4.0-beta1.sql#L10 Wat mij betreft dus geen invalid issue.
Wil je kijken of je hem wel terug ziet in de bovenstaande view nadat hij is getekend? Als hij namelijk in de tabel is weggeschreven dan moet hij ook in deze view staan. En alles wat deze view laat zien is zichtbaar in QGIS.....
Ik krijg nu deze foutmelding als ik iets wil intekenen op een nieuw gemaakt I-tje:
LOG: statement: BEGIN
ERROR: cannot insert into view "object_isolijnen"
DETAIL: Views that do not select from a single table or view are not automatically updatable.
HINT: To enable inserting into the view, provide an INSTEAD OF INSERT trigger or an unconditional ON INSERT DO INSTEAD rule.
STATEMENT: INSERT INTO "objecten"."object_isolijnen"("geom","id","hoogte","omschrijving","object_id","formelenaam","applicatie","datum_geldig_vanaf","datum_geldig_tot","typeobject") VALUES (st_multi(st_geomfromwkb($1::bytea,28992)),$2,'-4',NULL,2001,NULL,'OIV',NULL,NULL,NULL) RETURNING "id"
LOG: statement: ROLLBACK
LOG: statement: DEALLOCATE addfeatures
ERROR: prepared statement "addfeatures" does not exist
STATEMENT: DEALLOCATE addfeatures
LOG: statement: ROLLBACK
WARNING: there is no transaction in progress
Ik stel voor dit issue even te parkeren tot na mijn verlof, dan draai ik alle migratiescripts opnieuw op een nieuw opgehaalde productie-database in de test-omgeving, en kijken we dan even wat de status is. Er ontbreken nu kennelijk wat rules voor bovenstaande query.
Er staan geen rules/triggers bij de view object_isolijnen
Die zijn blijkbaar niet gerund op de database
Als je een nieuw object plaatst middenin bv een rivier, dan verschijnt na het invoeren van de naam het blauwe I-tje. Als je dan dieptelijnen tekent worden deze wel opgeslagen maar niet getoond. Pas als je het object aanpast naar bv Waterongevallen dan worden de eerder getekende lijnen zichtbaar. Maar het werkt ook bij bv. een Gebouw, Evenement of Natuur object. Op zich geen probleem omdat je toch zaken in vult, dit is meer vraag ter controle: is dit de bedoeling van de weergave, of is het een issue? Of zou het alleen bij Waterongevallen zichtbaar moeten worden?