OIV-NL-QGIS / QGIS_project

GNU General Public License v3.0
6 stars 3 forks source link

[Feedback v3.4.0-beta1-Zaandam] Isolijnen zichtbaar zodra attributenveld is ingevuld #252

Closed ghost closed 2 years ago

ghost commented 2 years ago

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?

Oostjoost commented 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

ghost commented 2 years ago

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.

Oostjoost commented 2 years ago

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.....

ghost commented 2 years ago

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.

Oostjoost commented 2 years ago

Er staan geen rules/triggers bij de view object_isolijnen

Oostjoost commented 2 years ago

Zie... https://github.com/OIV-NL-QGIS/IMROI_database/blob/8710628731f04e0eb0ce9b318b9bbc865c2ab49b/migratiescripts/migratie_3.3.7a-3.3.8a.sql#L1654

Die zijn blijkbaar niet gerund op de database