Index: /trunk/import/konv_batch.sh
===================================================================
--- /trunk/import/konv_batch.sh	(revision 330)
+++ /trunk/import/konv_batch.sh	(revision 331)
@@ -38,4 +38,6 @@
 ##                   Entfernen der historischen Objekte nach Konvertierung.
 ##   2014-09-09 F.J. krz: Parameter "--config PG_USE_COPY YES" zur Beschleunigung. Ausgabe import-Tabelle.
+##   2014-09-11 F.J. krz: Eintrag in import-Tabelle repariert.
+##                   Keine Abfrage des Symlinks auf kill/hist. Enstscheidend ist die aktuelle DB, nicht der Symlink
 
 POSTNAS_HOME=$(dirname $0)
@@ -133,6 +135,6 @@
 
 # Import Eintrag erzeugen
-# UrsprÃŒnglich fÃŒr Trigger-Steierung benÃ¶tigt. Nun als Metadaten nÃŒtzlich.
-  psql $con -c "INSERT INTO import (datum,verzeichnis,importart) VALUES ('"$(date '+%Y-%m-%d %H:%M:%S')"','"${ORDNER}"','"${verarb}"');"
+# UrsprÃŒnglich fÃŒr Trigger-Steuerung benÃ¶tigt. Nun als Metadaten nÃŒtzlich.
+  echo "INSERT INTO import (datum,verzeichnis,importart) VALUES ('"$(date '+%Y-%m-%d %H:%M:%S')"','"${ORDNER}"','"${verarb}"');" | psql $con
 
 # Ordner abarbeiten
@@ -193,19 +195,16 @@
   fi
 
-  if [ "$(readlink $POSTNAS_HOME/alkis-trigger.sql)" = "alkis-trigger-kill.sql" ]; then
-
-     # Durch EinfÃŒgen in Tabelle 'delete' werden LÃ¶schungen und Aktualisierungen anderer Tabellen getriggert
-     echo "** delete-Tabelle enthaelt:"
-     psql $con -c 'SELECT COUNT(featureid) AS delete_zeilen FROM "delete";'
-
-     echo "   delete-Tabelle loeschen:"
-     psql $con -c 'TRUNCATE table "delete";'
-
-    # Wenn die Datenbank MIT Historie geladen wurde, man diese aber gar nicht braucht,
-    # dann hinterher aufrÃ€umen der historischen Objekte 
-    echo "** geendete Objekte entfernen:"
-    psql $con -c "SELECT alkis_delete_all_endet();"
-
-  fi
+  # Durch EinfÃŒgen in Tabelle 'delete' werden LÃ¶schungen und Aktualisierungen anderer Tabellen getriggert
+  echo "** delete-Tabelle enthaelt:"
+  psql $con -c 'SELECT COUNT(featureid) AS delete_zeilen FROM "delete";'
+
+  echo "   delete-Tabelle loeschen:"
+  psql $con -c 'TRUNCATE table "delete";'
+
+  #if [ "$(readlink $POSTNAS_HOME/alkis-trigger.sql)" = "alkis-trigger-kill.sql" ]; then
+    # AufrÃ€umen der historischen Objekte 
+  #  echo "** geendete Objekte entfernen:"
+  #  psql $con -c "SELECT alkis_delete_all_endet();"
+  #fi
 
   echo "Das Fehler-Protokoll wurde ausgegeben in die Datei $errprot"
Index: /trunk/import/alkis-trigger-hist.sql
===================================================================
--- /trunk/import/alkis-trigger-hist.sql	(revision 330)
+++ /trunk/import/alkis-trigger-hist.sql	(revision 331)
@@ -1,2 +1,4 @@
+-- 2014-09-11 PostNAS 0.8
+
 CREATE TRIGGER delete_feature_trigger 
 	BEFORE INSERT ON delete 
@@ -4,6 +6,8 @@
 	EXECUTE PROCEDURE delete_feature_hist();
 
+/*
 CREATE TRIGGER insert_beziehung_trigger
-	AFTER INSERT ON alkis_beziehungen
-	FOR EACH ROW
-	EXECUTE PROCEDURE alkis_beziehung_inserted();
+        AFTER INSERT ON alkis_beziehungen
+        FOR EACH ROW
+        EXECUTE PROCEDURE alkis_beziehung_inserted();
+*/
Index: /trunk/import/umschalten_trigger_kill.sh
===================================================================
--- /trunk/import/umschalten_trigger_kill.sh	(revision 331)
+++ /trunk/import/umschalten_trigger_kill.sh	(revision 331)
@@ -0,0 +1,10 @@
+#!/bin/bash
+# Den Symlink in diesem Ordner so setzen, dass die neuen PostNAS-Datenbanken 
+# mit dem Trigger OHNE Historie angelegt werden
+
+rm alkis-trigger.sql
+
+#       Ziel                     Link-Name                
+ln -s   alkis-trigger-kill.sql   alkis-trigger.sql
+
+echo "Die ab jetzt neu angelegten ALKIS PostNAS-Datenbanken werden  O H N E  Historie getriggert."
Index: /trunk/import/alkis_PostNAS_schema.sql
===================================================================
--- /trunk/import/alkis_PostNAS_schema.sql	(revision 330)
+++ /trunk/import/alkis_PostNAS_schema.sql	(revision 331)
@@ -130,7 +130,6 @@
 -- B e z i e h u n g e n
 -- ----------------------------------------------
--- Zentrale Tabelle fuer alle Relationen im Buchwerk. ZukÃŒnftig  e n t f a l l e n d.
+-- Zentrale Tabelle fuer alle Relationen im Buchwerk. Seit PostNAS 0.8 entfallen.
 -- Die FremdschlÃŒssel 'beziehung_von' und 'beziehung_zu' verweisen auf die ID des Objekte (gml_id).
--- Das Feld 'gml_id' sollte daher in allen Tabellen indiziert werden.
 -- ZusÃ€tzlich enthÃ€lt 'beziehungsart' noch ein Verb fÃŒr die Art der Beziehung.
 /*
@@ -4567,5 +4566,5 @@
 SELECT AddGeometryColumn('ax_gemarkung','dummy',:alkis_epsg,'POINT',2);
 
-CREATE UNIQUE INDEX ax_gemarkung_gml ON ax_gemarkung USING btree (gml_id, beginnt);         -- Index fÃŒr alkis_beziehungen
+CREATE UNIQUE INDEX ax_gemarkung_gml ON ax_gemarkung USING btree (gml_id, beginnt);
 CREATE INDEX ax_gemarkung_nr         ON ax_gemarkung USING btree (land, gemarkungsnummer); -- Such-Index, Verweis aus ax_Flurstueck
 
Index: /trunk/import/sichten.sql
===================================================================
--- /trunk/import/sichten.sql	(revision 330)
+++ /trunk/import/sichten.sql	(revision 331)
@@ -30,6 +30,10 @@
 --  2014-01-31 Kommentar
 --  2014-02-06 nachmigration_aehnliche_anschriften
---  2014-09-02 Die Tabelle "alkis_beziehungen" ÃŒberflÃŒssig machen.
---             Relationen nun direkt ÃŒber neue Spalten in den Objekttabellen. 
+--  2014-09-02 Tabelle "alkis_beziehungen" ÃŒberflÃŒssig machen. Relationen nun ÃŒber Spalten in den Objekttabellen. 
+--  2014-09-11 Neu: View "fehlersuche_namensanteile_je_blatt", substring(gml_id) bei Relation-Join, mehr "endet IS NULL"
+
+-- ToDo: Einige Views sind sehr langsam geworden. Z.B. exp_csv welcher doppelverbindung verwendet.
+--       Dadurch Export aus Bauchauskunft sehr langsam!
+--       Derzeit provisorische Version von "doppelverbindung" (schnell aber nicht ganz korrrekt).
 
 -- Bausteine fÃŒr andere Views:
@@ -50,29 +54,74 @@
 --           DROP VIEW public.doppelverbindung;
 
+/*  -- korrekte Version, leider unertrÃ€glich langsam, z.B. beim Export von CSV aus der Auskunft
+
 CREATE OR REPLACE VIEW public.doppelverbindung
 AS
   -- FS >istGebucht> Buchungstelle
-  SELECT f1.gml_id             AS fsgml,    -- gml_id FlurstÃŒck
-         b1.gml_id             AS bsgml,    -- gml_id Buchungs
-         0                     AS ba_dien
+  SELECT f1.gml_id              AS fsgml,    -- gml_id FlurstÃŒck
+         b1.gml_id              AS bsgml,    -- gml_id Buchungs
+         0                      AS ba_dien
     FROM ax_flurstueck f1
-    JOIN ax_buchungsstelle b1   ON f1.istgebucht = b1.gml_id
+    JOIN ax_buchungsstelle b1   ON f1.istgebucht = substring(b1.gml_id,1,16)
  UNION
   -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle
-  SELECT f2.gml_id              AS fsgml,   -- gml_id FlurstÃŒck
-         b2.gml_id              AS bsgml,   -- gml_id Buchung - (herrschendes GB)
-         dien.buchungsart       AS ba_dien  -- Ein Feld aus der Zwischen-Buchung zur Fall-Unterscheidung
+  SELECT f2.gml_id              AS fsgml,    -- gml_id FlurstÃŒck
+         b2.gml_id              AS bsgml,    -- gml_id Buchung - (herrschendes GB)
+         dien.buchungsart       AS ba_dien   -- Ein Feld aus der Zwischen-Buchung zur Fall-Unterscheidung
     FROM ax_flurstueck f2
-    JOIN ax_buchungsstelle dien ON f2.istGebucht = dien.gml_id
-    JOIN ax_buchungsstelle b2   ON dien.gml_id = ANY (b2.an)
-    WHERE dien.endet IS NULL;  -- FÃŒr das zusÃ€tzliche Verbindungselement die Historie hier ausschlieÃen, 
+    JOIN ax_buchungsstelle dien ON f2.istgebucht = substring(dien.gml_id,1,16)
+    JOIN ax_buchungsstelle b2   ON substring(dien.gml_id,1,16) = ANY (b2.an)  -- auch "zu" ?
+   WHERE dien.endet IS NULL;   -- FÃŒr das zusÃ€tzliche Verbindungselement die Historie HIER ausschlieÃen, 
                                -- FÃŒr andere Tabellen muss dies in dem View erfolgen, der dies verwendet.
+*/
+
+-- TEST: Schneller, wenn auf Subtring verzichtet wird?  Ja!
+-- Aber: Verbindungen ÃŒber aktualisierte, also lange ID's werden nicht gefunden.  
+CREATE OR REPLACE VIEW public.doppelverbindung
+AS
+  -- FS >istGebucht> Buchungstelle
+  SELECT f1.gml_id              AS fsgml,    -- gml_id FlurstÃŒck
+         b1.gml_id              AS bsgml,    -- gml_id Buchungs
+         0                      AS ba_dien
+    FROM ax_flurstueck f1
+    JOIN ax_buchungsstelle b1   ON f1.istgebucht = substring(b1.gml_id,1,16)
+ UNION
+  -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle
+  SELECT f2.gml_id              AS fsgml,    -- gml_id FlurstÃŒck
+         b2.gml_id              AS bsgml,    -- gml_id Buchung - (herrschendes GB)
+         dien.buchungsart       AS ba_dien   -- Ein Feld aus der Zwischen-Buchung zur Fall-Unterscheidung
+    FROM ax_flurstueck f2
+    JOIN ax_buchungsstelle dien ON f2.istgebucht = substring(dien.gml_id,1,16)
+  --JOIN ax_buchungsstelle b2   ON substring(dien.gml_id,1,16) = ANY (b2.an)    -- korrekt
+    JOIN ax_buchungsstelle b2   ON           dien.gml_id       = ANY (b2.an)    -- schnell
+   WHERE dien.endet IS NULL;   -- Nur fÃŒr das zusÃ€tzliche Verbindungselement die Historie HIER ausschlieÃen, 
+                               -- FÃŒr andere Tabellen muss dies in dem View erfolgen, der dies verwendet.
 
 COMMENT ON VIEW public.doppelverbindung 
- IS 'ALKIS-Beziehung von FlurstÃŒck zu Buchung. UNION-Zusammenfassung des einfachen Falls mit direkter Buchung und des Falles mit Recht einer Buchungsstelle an einer anderen Buchungsstelle.';
+ IS 'ALKIS-Beziehung von FlurstÃŒck zu Buchung. UNION-Zusammenfassung des einfachen Falls mit direkter Buchung und des Falles mit Recht einer Buchungsstelle an einer anderen Buchungsstelle.
+Dies ist ausschlieÃlich gedacht zur Verwendung in anderen Views um diese einfacher zu machen.';
+
+/* Test zur Zeitmessung
+
+SELECT dien.gml_id, herr.gml_id
+FROM ax_buchungsstelle dien 
+JOIN ax_buchungsstelle herr  ON dien.gml_id = ANY (herr.an)
+WHERE dien.endet IS NULL AND herr.endet IS NULL
+LIMIT 300;
+-- 78 ms
+
+SELECT dien.gml_id, herr.gml_id
+FROM ax_buchungsstelle dien 
+JOIN ax_buchungsstelle herr  ON substring(dien.gml_id,1,16) = ANY (herr.an)
+WHERE dien.endet IS NULL AND herr.endet IS NULL
+LIMIT 300;
+-- 19454 ms
+
+
+*/
 
 -- Test-Ausgabe: Ein paar FÃ€lle mit "Recht an"
 --   SELECT * FROM doppelverbindung WHERE ba_dien > 0 LIMIT 20;
-
+-- Nach Umstellung auf PostNAS 0.8 - mit ANY() und Substring - sehr lange Antwortzeit in PG 8.4
 
 -- Ein View, der die Verbindung von FlurstÃŒck zur StraÃentabelle fÃŒr zwei verschiedene FÃ€lle herstellt.
@@ -81,5 +130,4 @@
 
 --           DROP VIEW public.flst_an_strasse;
-
 CREATE OR REPLACE VIEW public.flst_an_strasse
 AS
@@ -90,8 +138,8 @@
     FROM ax_flurstueck fm                    -- FlurstÃŒck Mit
     JOIN ax_lagebezeichnungmithausnummer lm  -- Lage MIT
-      ON lm.gml_id = ANY (fm.weistauf)  
+      ON substring(lm.gml_id,1,16) = ANY (fm.weistauf)  
     JOIN ax_lagebezeichnungkatalogeintrag sm
-      ON lm.land=sm.land AND lm.regierungsbezirk=sm.regierungsbezirk AND lm.kreis=sm.kreis  AND lm.gemeinde=sm.gemeinde AND lm.lage=sm.lage 
-   WHERE lm.endet IS NULL                    -- Verbinder nicht Historisch
+      ON lm.land=sm.land AND lm.regierungsbezirk=sm.regierungsbezirk AND lm.kreis=sm.kreis AND lm.gemeinde=sm.gemeinde AND lm.lage=sm.lage 
+   WHERE lm.endet IS NULL AND fm.endet IS NULL -- nichts Historisches
  UNION
   -- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag
@@ -101,8 +149,8 @@
     FROM ax_flurstueck fo                    -- FlurstÃŒck OHNE
     JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE
-      ON lo.gml_id = ANY (fo.zeigtauf)  
+      ON substring(lo.gml_id,1,16) = ANY (fo.zeigtauf)  
     JOIN ax_lagebezeichnungkatalogeintrag so -- StraÃe OHNE
       ON lo.land=so.land AND lo.regierungsbezirk=so.regierungsbezirk AND lo.kreis=so.kreis AND lo.gemeinde=so.gemeinde AND lo.lage=so.lage
-   WHERE lo.endet IS NULL;                   -- Verbinder nicht Historisch
+   WHERE lo.endet IS NULL AND fo.endet IS NULL; -- nichts Historisches
 
 COMMENT ON VIEW public.flst_an_strasse 
@@ -184,21 +232,21 @@
   FROM ax_flurstueck    f               -- FlurstÃŒck
   JOIN doppelverbindung d               -- beide FÃ€lle ÃŒber Union-View: direkt und ÃŒber Recht von Buchung an Buchung
-    ON d.fsgml = f.gml_id 
+    ON d.fsgml = f.gml_id
   JOIN ax_gemarkung g                   -- entschlÃŒsseln
     ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
   JOIN ax_buchungsstelle s              -- Buchungs-Stelle
-    ON d.bsgml = s.gml_id 
+    ON d.bsgml = s.gml_id
   JOIN ax_buchungsstelle_buchungsart b  -- EnstschlÃŒsselung der Buchungsart
     ON s.buchungsart = b.wert 
   JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
-    ON gb.gml_id = s.istbestandteilvon
+    ON substring(gb.gml_id,1,16) = s.istbestandteilvon
   JOIN ax_buchungsblattbezirk z 
     ON gb.land=z.land AND gb.bezirk=z.bezirk 
   JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
-    ON gb.gml_id = nn.istbestandteilvon
+    ON substring(gb.gml_id,1,16) = nn.istbestandteilvon
   JOIN ax_person p                      -- NamNum >benennt> Person 
-    ON p.gml_id = nn.benennt
+    ON substring(p.gml_id,1,16) = nn.benennt
   LEFT JOIN ax_anschrift a 
-    ON a.gml_id = ANY (p.hat)
+    ON substring(a.gml_id,1,16) = ANY (p.hat)
 
   -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen:
@@ -209,5 +257,5 @@
        FROM ax_namensnummer r 
        JOIN ax_buchungsblatt gr
-         ON r.istbestandteilvon = gr.gml_id  -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
+         ON r.istbestandteilvon = substring(gr.gml_id,1,16) -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
       WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
    ON rg.gml_id = gb.gml_id  -- zum GB
@@ -292,13 +340,13 @@
     ON s.buchungsart = b.wert 
   JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
-    ON gb.gml_id = s.istbestandteilvon
+    ON substring(gb.gml_id,1,16) = s.istbestandteilvon
   JOIN ax_buchungsblattbezirk z 
     ON gb.land=z.land AND gb.bezirk=z.bezirk 
   JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
-    ON gb.gml_id = nn.istbestandteilvon
+    ON substring(gb.gml_id,1,16) = nn.istbestandteilvon
   JOIN ax_person p                      -- NamNum >benennt> Person 
-    ON p.gml_id = nn.benennt
+    ON substring(p.gml_id,1,16) = nn.benennt
   LEFT JOIN ax_anschrift a 
-    ON a.gml_id = ANY (p.hat)
+    ON substring(a.gml_id,1,16) = ANY (p.hat)
 
   -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen:
@@ -309,6 +357,6 @@
        FROM ax_namensnummer r 
        JOIN ax_buchungsblatt gr
-         ON r.istbestandteilvon = gr.gml_id  -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
-      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
+         ON r.istbestandteilvon = substring(gr.gml_id,1,16) -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
+      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg  -- Rechtsgemeinschaft
    ON rg.gml_id = gb.gml_id  -- zum GB
 
@@ -345,5 +393,5 @@
      nn.beschriebderrechtsgemeinschaft
   FROM ax_buchungsblatt gb 
-  JOIN ax_namensnummer  nn  ON gb.gml_id = nn.istbestandteilvon
+  JOIN ax_namensnummer  nn  ON substring(gb.gml_id,1,16) = nn.istbestandteilvon
   WHERE NOT nn.artderrechtsgemeinschaft IS NULL
     AND gb.endet IS NULL AND nn.endet IS NULL -- Historie weglassen
@@ -435,6 +483,6 @@
         f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS such -- Suchstring fÃŒr ALKIS-Navigation nach FS-Kennzeichen
    FROM ax_flurstueck f 
-   JOIN ap_pto p ON f.gml_id = ANY( p.dientzurdarstellungvon) 
-  WHERE f.endet IS NULL;
+   JOIN ap_pto p ON substring(f.gml_id,1,16) = ANY(p.dientzurdarstellungvon) 
+  WHERE f.endet IS NULL AND p.endet IS NULL;
 -- TIPP: mit zusÃ€tzlichem LIMIT auftrufen!
 
@@ -447,8 +495,8 @@
         f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS such -- Suchstring fÃŒr ALKIS-Navigation nach FS-Kennzeichen
  FROM   ax_flurstueck f 
-   LEFT JOIN ap_pto p ON f.gml_id = ANY( p.dientzurdarstellungvon) 
-  WHERE p.gml_id IS NULL
-    AND f.endet IS NULL;
--- TIPP: mit zusÃ€tzlichem LIMIT auftrufen!
+ LEFT JOIN ap_pto p ON substring(f.gml_id,1,16) = ANY(p.dientzurdarstellungvon) 
+ WHERE p.gml_id IS NULL
+   AND f.endet IS NULL;
+-- TIPP: mit zusÃ€tzlichem LIMIT aufrufen!
 
 COMMENT ON VIEW flstnr_ohne_manuelle_position 
@@ -496,5 +544,5 @@
       ON r.artderfestlegung = a.wert
     LEFT JOIN ax_dienststelle d
-      ON r.land   = d.land  AND r.stelle = d.stelle 
+      ON r.land=d.land AND r.stelle=d.stelle 
   WHERE r.endet IS NULL AND d.endet IS NULL ;
 
@@ -561,5 +609,5 @@
            l.hausnummer 
       FROM   ax_flurstueck f 
-      JOIN   ax_lagebezeichnungmithausnummer l   ON  l.gml_id = ANY (f.weistauf)
+      JOIN   ax_lagebezeichnungmithausnummer l   ON  substring(l.gml_id,1,16) = ANY (f.weistauf)
       JOIN   ax_gemeinde g   ON l.kreis=g.kreis  AND l.gemeinde=g.gemeinde 
       JOIN   ax_lagebezeichnungkatalogeintrag s  ON  l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage
@@ -623,14 +671,14 @@
    FROM   ax_person              p
      JOIN ax_namensnummer        n   -- Namennummer >benennt> Person
-       ON p.gml_id = n.benennt
+       ON substring(p.gml_id,1,16) = n.benennt
      JOIN ax_buchungsblatt       g   -- Namensnummer >istBestandteilVon> Grundbuch
-       ON n.istbestandteilvon = g.gml_id
+       ON n.istbestandteilvon = substring(g.gml_id,1,16)
      JOIN ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk 
      JOIN ax_buchungsstelle      s   -- Buchungs-Stelle >istBestandteilVon> Grundbuch
-       ON s.istbestandteilvon = g.gml_id
+       ON s.istbestandteilvon = substring(g.gml_id,1,16)
      JOIN ax_buchungsstelle_buchungsart art 
        ON s.buchungsart = art.wert 
      JOIN ax_flurstueck          f  -- Flurstueck >istGebucht> Buchungs-Stelle
-       ON f.istgebucht = s.gml_id
+       ON f.istgebucht = substring(s.gml_id,1,16)
      JOIN ax_gemarkung           k    
        ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer 
@@ -685,19 +733,19 @@
    FROM   ax_person              p
      JOIN ax_namensnummer        n    -- Namennummer >benennt> Person
-       ON p.gml_id = n.benennt
+       ON substring(p.gml_id,1,16) = n.benennt
      JOIN ax_buchungsblatt       g    -- Namensnummer >istBestandteilVon> Grundbuch
-       ON n.istBestandteilVon = g.gml_id
+       ON n.istBestandteilVon = substring(g.gml_id,1,16)
      JOIN ax_buchungsblattbezirk b    
        ON g.land = b.land AND g.bezirk = b.bezirk 
      JOIN ax_buchungsstelle      sh  -- B-Stelle herr >istBestandteilVon> Grundbuch
-       ON sh.istbestandteilvon = g.gml_id  -- herrschende Buchung
+       ON sh.istbestandteilvon = substring(g.gml_id,1,16) -- herrschende Buchung
      JOIN ax_buchungsstelle_buchungsart arth 
        ON sh.buchungsart = arth.wert 
      JOIN ax_buchungsstelle      sd   -- B-Stelle herr.  >an/zu> B-Stelle dien.
-       ON (sd.gml_id =ANY(sh.an) OR sd.gml_id = ANY(sh.zu) )
+       ON (substring(sd.gml_id,1,16) = ANY(sh.an) OR substring(sd.gml_id,1,16) = ANY(sh.zu))
      JOIN ax_buchungsstelle_buchungsart artd 
        ON sd.buchungsart = artd.wert
      JOIN ax_flurstueck          f    -- Flurstueck  >istGebucht> B-Stelle dien     
-       ON f.istgebucht = sd.gml_id
+       ON f.istgebucht = substring(sd.gml_id,1,16)
      JOIN ax_gemarkung           k    
        ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer 
@@ -722,5 +770,6 @@
    FROM ax_gebaeude g
    JOIN ax_lagebezeichnungmithausnummer l  
-     ON l.gml_id = ANY(g.zeigtauf) 
+     ON substring(l.gml_id,1,16) = ANY(g.zeigtauf)
+  WHERE g.endet IS NULL AND l.endet IS NULL
   GROUP BY l.gml_id, l.gemeinde, l.lage, l.hausnummer
   HAVING count(g.gml_id) > 1;
@@ -735,8 +784,10 @@
    FROM ax_gebaeude g1
    JOIN ax_lagebezeichnungmithausnummer l1 ON l1.gml_id = ANY(g1.zeigtauf)
-  WHERE g1.gml_id IN -- Subquery sucht GebÃ€ude mit meherern Hausnummen
+  WHERE g1.endet IS NULL AND l1.endet IS NULL 
+    AND g1.gml_id IN -- Subquery sucht GebÃ€ude mit meherern Hausnummen
    (SELECT g2.gml_id 
       FROM ax_gebaeude g2
-      JOIN ax_lagebezeichnungmithausnummer l2 ON l2.gml_id = ANY(g2.zeigtauf)
+      JOIN ax_lagebezeichnungmithausnummer l2 ON substring(l2.gml_id,1,16) = ANY(g2.zeigtauf)
+     WHERE g2.endet IS NULL AND l2.endet IS NULL
      GROUP BY g2.gml_id 
    HAVING count(l2.gml_id) > 1)
@@ -754,4 +805,5 @@
     FROM ax_buchungsstelle_buchungsart a
     JOIN ax_buchungsstelle b  ON a.wert = b.buchungsart
+   WHERE b.endet IS NULL
 GROUP BY a.wert, a.bezeichner
 ORDER BY a.wert, a.bezeichner;
@@ -772,13 +824,7 @@
    JOIN doppelverbindung d     -- beide FÃ€lle ÃŒber Union-View: direkt und ÃŒber Recht von BS an BS
      ON d.fsgml = f.gml_id 
-
-
-
    JOIN ax_buchungsstelle s    -- Buchungs-Stelle
      ON d.bsgml = s.gml_id 
-   WHERE s.buchungsart = 2101;
-
-
-
+   WHERE s.buchungsart = 2101 AND f.endet IS NULL AND s.endet IS NULL;
 
 COMMENT ON VIEW erbbaurechte_suchen
@@ -825,6 +871,7 @@
     ON k.bezeichnung = o.unverschluesselt   -- Gleiche Namen 
    JOIN ax_flurstueck fo                    --  Flurst. >zeigtAuf>  Lage
-    ON o.gml_id = ANY(fo.zeigtauf)  
+    ON substring(o.gml_id,1,16) = ANY(fo.zeigtauf)  
  WHERE fo.gemeinde = k.gemeinde  -- Gewanne wird fÃŒr ein Flst. in gleicher Gemeinde verwendet, wie der StraÃenschlÃŒssel
+   AND k.endet IS NULL AND o.endet IS NULL AND fo.endet IS NULL 
   ORDER BY fo.gemarkungsnummer, fo.flurnummer, fo.zaehler, k.gemeinde, k.bezeichnung;
 
@@ -841,6 +888,6 @@
          a1.ort_post, a1.strasse AS strasse1, a2.strasse AS strasse2, a1.hausnummer
     FROM ax_person    p
-    JOIN ax_anschrift a1 ON a1.gml_id = ANY(p.hat)
-    JOIN ax_anschrift a2 ON a2.gml_id = ANY(p.hat)
+    JOIN ax_anschrift a1 ON substring(a1.gml_id,1,16) = ANY(p.hat)
+    JOIN ax_anschrift a2 ON substring(a2.gml_id,1,16) = ANY(p.hat)
    WHERE a1.gml_id <> a2.gml_id
       AND a1.ort_post =  a2.ort_post
@@ -1011,4 +1058,36 @@
 */
 
+-- Anteile der Namensnummern am Blatt aufsummieren.
+-- BlÃ€tter mit RechtsverhÃ€ltnis (Beschrieb) nicht beachten.
+-- Anzeigen, wenn die Summe nicht 1 ergibt.
+-- Keine Angabe in ZÃ€hler/Nenner wird als 1 gewertet.
+
+-- Anlass zu dieser Auswertung war:
+-- Wenn mit PostNAS 0.8 und Trigger "kill" (ohne Historie) eine NBA-Abgabe mit Abgabeart "3100 fallbezogen (mit Historie)"
+-- konvertiert wird, dann wird Update nicht richtig verarbeitet.
+-- Update setzt z.B. das endet-Datum an einen Namensnummer. Alte Namen verbleiben auf dem Grundbuch.
+
+CREATE OR REPLACE VIEW fehlersuche_namensanteile_je_blatt
+AS
+  SELECT g.gml_id, g.bezirk || '-' || g.buchungsblattnummermitbuchstabenerweiterung AS kennzeichen, 
+         sum(coalesce(n.zaehler/n.nenner, 1.0))::double precision AS summe_der_anteile
+  FROM ax_buchungsblatt g
+  JOIN ax_namensnummer n ON substring(g.gml_id,1,16) = n.istbestandteilvon
+  WHERE g.endet IS NULL AND n.endet IS NULL
+  GROUP BY g.gml_id, g.bezirk || '-' || g.buchungsblattnummermitbuchstabenerweiterung
+  HAVING sum(coalesce(n.zaehler/n.nenner, 1)) <> 1.0::double precision
+     AND (  -- die FÃ€lle mit einer Rechtsgemeinschaft nicht verwenden
+        SELECT gml_id 
+        FROM ax_namensnummer nr 
+        WHERE substring(g.gml_id,1,16) = nr.istbestandteilvon
+          AND NOT nr.artderrechtsgemeinschaft IS NULL
+          AND nr.endet IS NULL
+        LIMIT 1
+     ) IS NULL
+  LIMIT 100;
+
+COMMENT ON VIEW fehlersuche_namensanteile_je_blatt
+ IS 'Suchen nach GB-BlÃ€ttern bei denen die Summe der Anteile der Namensnummern nicht passt.
+Mit Ausnahme von RechtsverhÃ€ltnissen sollte sie Summe der BrÃŒche immer 1/1 ergeben.';
 
 -- END --
Index: /trunk/import/umschalten_trigger_historie.sh
===================================================================
--- /trunk/import/umschalten_trigger_historie.sh	(revision 331)
+++ /trunk/import/umschalten_trigger_historie.sh	(revision 331)
@@ -0,0 +1,10 @@
+#!/bin/bash
+# Den Symlink in diesem Ordner so setzen, dass die neuen PostNAS-Datenbanken 
+# mit dem Trigger MIT Historie angelegt werden
+
+rm alkis-trigger.sql
+
+#       Ziel                     Link-Name
+ln -s   alkis-trigger-hist.sql   alkis-trigger.sql
+
+echo "Die ab jetzt neu angelegten ALKIS PostNAS-Datenbanken werden  M I T  Historie getriggert."
Index: /trunk/import/alkis-functions.sql
===================================================================
--- /trunk/import/alkis-functions.sql	(revision 330)
+++ /trunk/import/alkis-functions.sql	(revision 331)
@@ -18,4 +18,8 @@
 
 -- 2014-09-04  Trigger-Funktion "delete_feature_kill()" angepasst: keine Tabelle "alkis_beziehungen" mehr.
+
+-- 2014-09-11  Functions auskommentiert oder gelÃ¶scht, die "alkis_beziehungen" benÃ¶tigen:
+--               "alkis_mviews()", delete_feature_kill_vers07(), alkis_beziehung_inserted()
+--             Trigger-Function "delete_feature_hist" durch aktuelle Version aus OSGeo4W ersetzt.
 
 -- Table/View/Sequence lÃ¶schen, wenn vorhanden
@@ -162,4 +166,5 @@
 
 -- Ãbersicht erzeugen, die alle alkis_beziehungen mit den Typen der beteiligen ALKIS-Objekte versieht
+/*
 SELECT alkis_dropobject('alkis_mviews');
 CREATE FUNCTION alkis_mviews() RETURNS varchar AS $$
@@ -191,4 +196,5 @@
 END;
 $$ LANGUAGE plpgsql;
+*/
 
 -- Indizes erzeugen
@@ -275,4 +281,6 @@
 $$ LANGUAGE plpgsql;
 
+-- Die folgende Trigger-Version kopiert aus  OSGeo4W / apps / alkis-import, Datei:alkis-functions.sql
+
 -- Im Trigger 'delete_feature_trigger' muss eine dieser beiden Funktionen
 -- (delete_feature_hist oder delete_feature_kill) verlinkt werden, je nachdem ob nur
@@ -280,18 +288,60 @@
 
 -- LÃ¶schsatz verarbeiten (MIT Historie)
+-- context='update'        => "endet" auf ÃŒbergebene Zeit setzen und anlass festhalten
 -- context='delete'        => "endet" auf aktuelle Zeit setzen
 -- context='replace'       => "endet" des ersetzten auf "beginnt" des neuen Objekts setzen
 CREATE OR REPLACE FUNCTION delete_feature_hist() RETURNS TRIGGER AS $$
 DECLARE
-	sql TEXT;
-	gml_id TEXT;
+	s TEXT;
+	alt_id TEXT;
+	neu_id TEXT;
+	beginnt TEXT;
 	endete TEXT;
 	n INTEGER;
 BEGIN
 	NEW.context := lower(NEW.context);
-	gml_id      := substr(NEW.featureid, 1, 16);
-
 	IF NEW.context IS NULL THEN
 		NEW.context := 'delete';
+	END IF;
+
+	-- TIMESTAMP weder in gml_id noch identifier verlÃ€Ãlich.
+	-- also ggf. aus Datenbank holen
+
+	IF length(NEW.featureid)=32 THEN
+		alt_id  := substr(NEW.featureid, 1, 16);
+
+		IF NEW.featureid<>NEW.replacedBy THEN
+			-- Beginnt-Datum aus Timestamp
+			beginnt := substr(NEW.featureid, 17, 4) || '-'
+				|| substr(NEW.featureid, 21, 2) || '-'
+				|| substr(NEW.featureid, 23, 2) || 'T'
+				|| substr(NEW.featureid, 26, 2) || ':'
+				|| substr(NEW.featureid, 28, 2) || ':'
+				|| substr(NEW.featureid, 30, 2) || 'Z'
+				;
+		END IF;
+	ELSIF length(NEW.featureid)=16 THEN
+		alt_id  := NEW.featureid;
+	ELSE
+		RAISE EXCEPTION '%: LÃ€nge 16 oder 32 statt % erwartet.', NEW.featureid, length(NEW.featureid);
+	END IF;
+
+	IF beginnt IS NULL THEN
+		-- Beginnt-Datum des Ã€ltesten Eintrag, der nicht untergegangen ist
+		-- => der Satz dessen 'endet' gesetzt werden muÃ
+		EXECUTE 'SELECT min(beginnt) FROM ' || NEW.typename
+			|| ' WHERE gml_id=''' || alt_id || ''''
+			|| ' AND endet IS NULL'
+			INTO beginnt;
+	END IF;
+
+	IF beginnt IS NULL THEN
+		IF NEW.context = 'delete' OR NEW.safetoignore = 'true' THEN
+			RAISE NOTICE 'Kein Beginndatum fÃŒr Objekt % gefunden - ignoriert.', alt_id;
+			NEW.ignored := true;
+			RETURN NEW;
+		ELSE
+			RAISE EXCEPTION 'Kein Beginndatum fÃŒr Objekt % gefunden.', alt_id;
+		END IF;
 	END IF;
 
@@ -308,61 +358,96 @@
 		END IF;
 
-		IF NEW.replacedBy IS NULL OR length(NEW.replacedBy)<16 THEN
-			IF NEW.safetoignore = 'true' THEN
-				RAISE NOTICE '%: Nachfolger ''%'' nicht richtig gesetzt - ignoriert', NEW.featureid, NEW.replacedBy;
-				NEW.ignored := true;
-				RETURN NEW;
+		IF length(NEW.replacedBy)=32 THEN
+			-- Beginnt-Datum aus Timestamp
+			IF NEW.featureid<>NEW.replacedBy THEN
+				endete  := substr(NEW.replacedBy, 17, 4) || '-'
+					|| substr(NEW.replacedBy, 21, 2) || '-'
+					|| substr(NEW.replacedBy, 23, 2) || 'T'
+					|| substr(NEW.replacedBy, 26, 2) || ':'
+					|| substr(NEW.replacedBy, 28, 2) || ':'
+					|| substr(NEW.replacedBy, 30, 2) || 'Z'
+					;
+			END IF;
+		ELSIF length(NEW.replacedBy)<>16 THEN
+			RAISE EXCEPTION '%: LÃ€nge 16 oder 32 statt % erwartet.', NEW.replacedBy, length(NEW.replacedBy);
+		END IF;
+
+		neu_id := NEW.replacedBy;
+		IF endete IS NULL THEN
+			-- Beginnt-Datum des neuesten Eintrag, der nicht untergegangen ist
+			-- => Enddatum fÃŒr vorherigen Satz
+			EXECUTE 'SELECT max(beginnt) FROM ' || NEW.typename
+				|| ' WHERE gml_id=''' || NEW.replacedBy || ''''
+				|| ' AND beginnt>''' || beginnt || ''''
+				|| ' AND endet IS NULL'
+				INTO endete;
+			IF endete IS NULL AND length(NEW.replacedBy)=32 THEN
+				EXECUTE 'SELECT max(beginnt) FROM ' || NEW.typename
+					|| ' WHERE gml_id=''' || substr(NEW.replacedBy, 1, 16) || ''''
+					|| ' AND beginnt>''' || beginnt || ''''
+					|| ' AND endet IS NULL'
+				INTO endete;
+				neu_id := substr(NEW.replacedBy, 1, 16);
+			END IF;
+		END IF;
+
+		IF alt_id<>substr(neu_id, 1, 16) THEN
+			RAISE NOTICE 'Objekt % wird durch Objekt % ersetzt.', alt_id, neu_id;
+		END IF;
+
+		IF endete IS NULL THEN
+			RAISE NOTICE 'Kein Beginndatum fÃŒr Objekt % gefunden.', NEW.replacedBy;
+		END IF;
+
+		IF endete IS NULL OR beginnt=endete THEN
+			RAISE EXCEPTION 'Objekt % wird durch Objekt % ersetzt (leere Lebensdauer?).', alt_id, neu_id;
+		END IF;
+	ELSIF NEW.context='update' THEN
+		endete := NEW.endet;
+	ELSE
+		RAISE EXCEPTION '%: UngÃŒltiger Kontext % (''delete'', ''replace'' oder ''update'' erwartet).', NEW.featureid, NEW.context;
+	END IF;
+
+	s   := 'UPDATE ' || NEW.typename
+	    || ' SET endet=''' || endete || ''''
+	    || ',anlass=''' || coalesce(NEW.anlass,'000000') || ''''
+	    || ' WHERE gml_id=''' || NEW.featureid || ''''
+	    || ' AND beginnt=''' || beginnt || ''''
+	    || ' AND endet IS NULL';
+	EXECUTE s;
+	GET DIAGNOSTICS n = ROW_COUNT;
+	IF n=0 AND alt_id<>NEW.featureid THEN
+		s   := 'UPDATE ' || NEW.typename
+		    || ' SET endet=''' || endete || ''''
+	            || ',anlass=''' || coalesce(NEW.anlass,'000000') || ''''
+	            || ' WHERE gml_id=''' || alt_id || ''''
+	            || ' AND beginnt=''' || beginnt || ''''
+	            || ' AND endet IS NULL';
+		EXECUTE s;
+		GET DIAGNOSTICS n = ROW_COUNT;
+	END IF;
+
+	IF n<>1 THEN
+		RAISE NOTICE 'SQL[%<>1]: %', n, s;
+		IF NEW.context = 'delete' OR NEW.safetoignore = 'true' THEN
+			RAISE NOTICE '%: Untergangsdatum von % Objekten statt einem auf % gesetzt - ignoriert', NEW.featureid, n, endete;
+			NEW.ignored := true;
+			RETURN NEW;
+		ELSIF n=0 THEN
+			EXECUTE 'SELECT endet FROM ' || NEW.typename ||
+				' WHERE gml_id=''' || alt_id || '''' ||
+				' AND beginnt=''' || beginnt || ''''
+				INTO endete;
+
+			IF NOT endete IS NULL THEN
+				RAISE NOTICE '%: Objekt bereits % untergegangen - ignoriert', NEW.featureid, endete;
 			ELSE
-				RAISE EXCEPTION '%: Nachfolger ''%'' nicht richtig gesetzt - Abbruch', NEW.featureid, NEW.replacedBy;
+				RAISE NOTICE '%: Objekt nicht gefunden - ignoriert', NEW.featureid;
 			END IF;
-		END IF;
-
-		IF length(NEW.replacedBy)=16 THEN
-			EXECUTE 'SELECT beginnt FROM ' || NEW.typename ||
-			        ' WHERE gml_id=''' || NEW.replacedBy || ''' AND endet IS NULL' ||
-				' ORDER BY beginnt DESC LIMIT 1'
-                           INTO endete;
-		ELSE
-			-- replaceBy mit Timestamp
-			EXECUTE 'SELECT beginnt FROM ' || NEW.typename ||
-			        ' WHERE identifier=''urn:adv:oid:' || NEW.replacedBy || ''''
-			   INTO endete;
-			IF endete IS NULL THEN
-				EXECUTE 'SELECT beginnt FROM ' || NEW.typename ||
-					' WHERE gml_id=''' || substr(NEW.replacedBy,1,16) || ''' AND endet IS NULL' ||
-					' ORDER BY beginnt DESC LIMIT 1'
-				   INTO endete;
-			END IF;
-		END IF;
-
-		IF endete IS NULL THEN
-			IF NEW.safetoignore = 'true' THEN
-				RAISE NOTICE '%: Nachfolger % nicht gefunden - ignoriert', NEW.featureid, NEW.replacedBy;
-				NEW.ignored := true;
-				RETURN NEW;
-			ELSE
-				RAISE EXCEPTION '%: Nachfolger % nicht gefunden', NEW.featureid, NEW.replacedBy;
-			END IF;
-		END IF;
-	ELSE
-		RAISE EXCEPTION '%: UngÃŒltiger Kontext % (''delete'' oder ''replace'' erwartet).', NEW.featureid, NEW.context;
-	END IF;
-
-	sql	:= 'UPDATE ' || NEW.typename
-		|| ' SET endet=''' || endete || ''''
-		|| ' WHERE gml_id=''' || gml_id || ''''
-		|| ' AND endet IS NULL'
-		|| ' AND beginnt<''' || endete || '''';
-	-- RAISE NOTICE 'SQL: %', sql;
-	EXECUTE sql;
-	GET DIAGNOSTICS n = ROW_COUNT;
-	IF n<>1 THEN
-		RAISE NOTICE 'SQL: %', sql;
-		IF NEW.context = 'delete' OR NEW.safetoignore = 'true' THEN
-			RAISE NOTICE '%: Untergangsdatum von % Objekten statt nur einem auf % gesetzt - ignoriert', NEW.featureid, n, endete;
+
 			NEW.ignored := true;
 			RETURN NEW;
 		ELSE
-			RAISE EXCEPTION '%: Untergangsdatum von % Objekten statt nur einem auf % gesetzt - Abbruch', NEW.featureid, n, endete;
+			RAISE EXCEPTION '%: Untergangsdatum von % Objekten statt einem auf % gesetzt - Abbruch', NEW.featureid, n, endete;
 		END IF;
 	END IF;
@@ -373,53 +458,4 @@
 $$ LANGUAGE plpgsql;
 
--- "delete" und "replace" verarbeiten (OHNE Historie). Historische Objekte werden sofort gelÃ¶scht.
--- Geaendert 2014-02-03 auf Vorschlag M.B. Krs. Unna
-
--- 2014-08-27: Anpassung an vereinheitlichtes Datenbank-Schema.
--- Wenn die Spalte gml_id im Format "character varying" (ohne LÃ€ngenbegrenzung) angelegt wird,
--- muss gezielt der ID-Teil vor dem Timestamp angesprochen werden.
--- Zugriff auf die Spalte gml_id umgestellt von "=" auf "like".
-CREATE OR REPLACE FUNCTION delete_feature_kill_vers07() RETURNS TRIGGER AS $$
-DECLARE
-	begsql TEXT;
-	aktbeg TEXT;
-	gml_id TEXT;
-BEGIN
-	NEW.typename := lower(NEW.typename); -- Objektart = Tabellen-Name
-	NEW.context := lower(NEW.context);   -- Operation 'delete', 'replace' oder 'update'
-	gml_id      := substr(NEW.featureid, 1, 16); -- ID-Teil der gml_id, ggf. anhÃ€ngender Timestamp abgeschnitten
-
-	IF NEW.context IS NULL THEN
-		NEW.context := 'delete'; -- default
-	END IF;
-
-	IF NEW.context='delete' THEN -- ersatzloses LÃ¶schen des Objektes
-
-          -- In der Objekt-Tabelle
-		EXECUTE 'DELETE FROM ' || NEW.typename || ' WHERE gml_id like ''' || gml_id || '%''';
- 
-         -- Beziehungen von und zu dem Objekt sind hinfaellig (zukÃŒnftig entfallend)
-		EXECUTE 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || gml_id || ''' OR beziehung_zu = ''' || gml_id || '''';
-
-		--RAISE NOTICE 'LÃ¶sche gml_id % in % und Beziehungen', gml_id, NEW.typename;
-
-	ELSE -- Ersetzen eines Objektes (Replace). In der Objekt-Tabelle sind jetzt bereits 2 Objekte vorhanden (alt und neu).
-
-		-- beginnt-Wert des aktuellen Objektes ermitteln
-		begsql := 'SELECT max(beginnt) FROM ' || NEW.typename || ' WHERE gml_id like ''' || substr(NEW.replacedBy, 1, 16) || '%'' AND endet IS NULL';
-		EXECUTE begsql INTO aktbeg;
-
-		-- Alte Objekte entfernen
-		EXECUTE 'DELETE FROM ' || NEW.typename || ' WHERE gml_id like ''' || gml_id || '%'' AND beginnt < ''' || aktbeg || '''';
-
-		-- Beziehungen des alten Objektes entfernen, die aus frÃŒheren Importen stammen
-		EXECUTE 'DELETE FROM alkis_beziehungen WHERE beziehung_von like ''' || gml_id || '%'' AND import_id < (SELECT max(id) FROM import)';
-
-	END IF;
-
-	NEW.ignored := false;
-	RETURN NEW;
-END;
-$$ LANGUAGE plpgsql;
 
 -- 2014-09-04: Version 0.8 ohne "alkis_beziehungen"-Tabelle
@@ -459,4 +495,5 @@
 
 -- BeziehungssÃ€tze aufrÃ€umen
+/*
 CREATE OR REPLACE FUNCTION alkis_beziehung_inserted() RETURNS TRIGGER AS $$
 BEGIN
@@ -465,4 +502,5 @@
 END;
 $$ LANGUAGE plpgsql;
+*/
 
 
Index: /trunk/mapbender/conf/alkisnav_conf.php
===================================================================
--- /trunk/mapbender/conf/alkisnav_conf.php	(revision 330)
+++ /trunk/mapbender/conf/alkisnav_conf.php	(revision 331)
@@ -35,4 +35,12 @@
 	$ag_liste = "'2102','2105','2106','2107','2108','2110','2303','2307'";
 
+#	Nur Personen anzeigen, die Eigentum in der Gemeinde (-liste) haben
+#	"true" setzt voraus, dass die Hilfstabelle "gemeinde_person" gefuellt ist
+	$persfilter=true;
+
+#	hausnummernohnegebaeude - sollen Hausnummern ohne Gebäude ausgegeben werden?
+#	1 ja / 0 nein
+	$hausnummernohnegebaeude=1;
+
 #	Entwicklungsumgebung
 	$debug=0; // 0=Produktion, 1=mit Fehlermeldungen, 2=mit Informationen, 3=mit SQL
