Index: trunk/import/alkis_PostNAS_schema.sql
===================================================================
--- trunk/import/alkis_PostNAS_schema.sql	(revision 331)
+++ trunk/import/alkis_PostNAS_schema.sql	(revision 332)
@@ -50,4 +50,6 @@
 --               * Ãbernahme der Objektartengruppe in den Kommentar zur Tabelle.
 
+-- 2014-09-12 FJ Indizierung der ersten 16 Zeichen der gml_id, wenn diese Ziel einer ALKIS-Beziehung ist.
+--               "delete"-Tabelle aus Norbit-Version passend zum Hist-Trigger.
 
 --  Dies Schema kann NICHT mehr mit der gdal-Version 1.9 verwendet werden.
@@ -98,10 +100,15 @@
 
 COMMENT ON TABLE  import             IS 'PostNAS: Verwaltung der Import-ProgrammlÃ€ufe. Wird nicht vom Konverter gefÃŒllt sondern aus der Start-Prozedur (z.B. konv_batch.sh).';
-COMMENT ON COLUMN import.id          IS 'Laufende Nummer der Konverter-Datei-Verarbeitung. Der Max-Wert von "id" wird als "alkis_beziehungen.import_id" verwendet, um ein vollstÃ€ndiges LÃ¶schen alter Beziehungen zu ermÃ¶glichen.';
+COMMENT ON COLUMN import.id          IS 'Laufende Nummer der Konverter-Datei-Verarbeitung.';
 COMMENT ON COLUMN import.datum       IS 'Zeitpunkt des Beginns des Konverter-Laufes fÃŒr einen Stapel von NAS-Dateien.';
 COMMENT ON COLUMN import.verzeichnis IS 'Ort von dem die NAS-Dateien verarbeitet wurden.';
 COMMENT ON COLUMN import.importart   IS 'Modus des Konverter-Laufes: e="Erstladen" oder a="NBA-Aktualisierung"';
 
--- Tabelle "delete" fÃŒr LÃ¶sch- und FortfÃŒhrungsdatensÃ€tze
+-- Tabelle "delete" fÃŒr LÃ¶sch- und FortfÃŒhrungsdatensÃ€tze.
+-- Ãber diese Tabelle werden Aktualisierungen des Bestandes gesteuert.
+-- Der Konverter ogr2ogr (PostNAS) trÃ€gt die NAS-Operatuonen "delete", "replace" und "update" hier ein.
+-- Die weitere ALKIS-spezifische AusfÃŒhrung dieser Operationen muss durch Trigger auf dieser Tabelle erfolgen.
+-- Das betrifft z.B. das LÃ¶schen von Objekten, die ÃŒber die NAS-Update-Funktion einen "endet"-Eintrag bekommen haben. 
+-- 2014-09-12: "anlass" und "endet" hinzugefÃŒgt. Aktueller Trigger (hist) fÃŒr NAS-"update" benÃ¶tigt diese Spalten.
 CREATE TABLE "delete" (
      ogc_fid             serial NOT NULL,
@@ -111,4 +118,6 @@
      safetoignore        character varying,       -- replace.safetoignore 'true'/'false'
      replacedBy          character varying,       -- gmlid
+	anlass		     character varying,       -- update.anlass
+	endet		     character(20),           -- update.endet
      ignored             boolean DEFAULT false,   -- Satz wurde nicht verarbeitet
      CONSTRAINT delete_pk PRIMARY KEY (ogc_fid)
@@ -125,4 +134,6 @@
 COMMENT ON COLUMN delete.safetoignore IS 'Attribut safeToIgnore von wfsext:Replace';
 COMMENT ON COLUMN delete.replacedBy   IS 'gml_id des Objekts, das featureid ersetzt';
+COMMENT ON COLUMN delete.anlass       IS 'update.anlass';
+COMMENT ON COLUMN delete.endet        IS 'update.endet';
 COMMENT ON COLUMN delete.ignored      IS 'LÃ¶schsatz wurde ignoriert';
 
@@ -130,5 +141,6 @@
 -- B e z i e h u n g e n
 -- ----------------------------------------------
--- Zentrale Tabelle fuer alle Relationen im Buchwerk. Seit PostNAS 0.8 entfallen.
+-- Zentrale Tabelle fuer alle Relationen im Buchwerk. 
+-- Seit PostNAS 0.8 entfallen. Wird aber von PostNAS wieder angelegt, wenn sie fehlt.
 -- Die FremdschlÃŒssel 'beziehung_von' und 'beziehung_zu' verweisen auf die ID des Objekte (gml_id).
 -- ZusÃ€tzlich enthÃ€lt 'beziehungsart' noch ein Verb fÃŒr die Art der Beziehung.
@@ -274,4 +286,5 @@
 CREATE INDEX ap_lpo_geom_idx   ON ap_lpo USING gist  (wkb_geometry);
 CREATE UNIQUE INDEX ap_lpo_gml ON ap_lpo USING btree (gml_id, beginnt);
+CREATE INDEX ap_lpo_gml16      ON ap_lpo USING btree (substring(gml_id,1,16)); -- ALKIS-Relation
 CREATE INDEX ap_lpo_endet      ON ap_lpo USING btree (endet);
 CREATE INDEX ap_lpo_dzdv       ON ap_lpo USING gin   (dientzurdarstellungvon);
@@ -506,4 +519,5 @@
 CREATE INDEX ax_flurstueck_geom_idx   ON ax_flurstueck USING gist  (wkb_geometry);
 CREATE UNIQUE INDEX ax_flurstueck_gml ON ax_flurstueck USING btree (gml_id, beginnt);
+CREATE INDEX ax_flurstueck_gml16      ON ax_flurstueck USING btree (substring(gml_id,1,16)); -- ALKIS-Relation
 CREATE INDEX ax_flurstueck_lgfzn      ON ax_flurstueck USING btree (land, gemarkungsnummer, flurnummer, zaehler, nenner);
 CREATE INDEX ax_flurstueck_arz        ON ax_flurstueck USING btree (abweichenderrechtszustand);
@@ -611,6 +625,7 @@
 
 CREATE UNIQUE INDEX ax_grenzpunkt_gml ON ax_grenzpunkt USING btree (gml_id, beginnt);
-CREATE INDEX ax_grenzpunkt_abmm ON ax_grenzpunkt USING btree (abmarkung_marke);
-CREATE INDEX ax_grenzpunkt_za   ON ax_grenzpunkt USING btree (zeigtauf);
+CREATE INDEX ax_grenzpunkt_gml16 ON ax_grenzpunkt USING btree (substring(gml_id,1,16)); -- ALKIS-Relation
+CREATE INDEX ax_grenzpunkt_abmm  ON ax_grenzpunkt USING btree (abmarkung_marke);
+CREATE INDEX ax_grenzpunkt_za    ON ax_grenzpunkt USING btree (zeigtauf);
 
 COMMENT ON TABLE  ax_grenzpunkt        IS 'Angaben zum FlurstÃŒck: (ZUSO) "Grenzpunkt" ist ein den Grenzverlauf bestimmender, meist durch Grenzzeichen gekennzeichneter Punkt.';
@@ -651,4 +666,5 @@
 
 CREATE UNIQUE INDEX ax_lagebezeichnungohnehausnummer_gml ON ax_lagebezeichnungohnehausnummer USING btree (gml_id, beginnt);
+CREATE INDEX ax_lagebezeichnungohnehausnummer_gml16      ON ax_lagebezeichnungohnehausnummer USING btree (substring(gml_id,1,16)); -- ALKIS-Relation
 CREATE INDEX ax_lagebezeichnungohnehausnummer_key        ON ax_lagebezeichnungohnehausnummer USING btree (land, regierungsbezirk, kreis, gemeinde,lage);
 --EATE INDEX ax_lagebezeichnungohnehausnummer_beschreibt ON ax_lagebezeichnungohnehausnummer USING gin (beschreibt);
@@ -701,4 +717,5 @@
 
 CREATE UNIQUE INDEX ax_lagebezeichnungmithausnummer_gml ON ax_lagebezeichnungmithausnummer USING btree (gml_id, beginnt);
+CREATE INDEX ax_lagebezeichnungmithausnummer_gml16      ON ax_lagebezeichnungmithausnummer USING btree (substring(gml_id,1,16)); -- ALKIS-Relation
 CREATE INDEX ax_lagebezeichnungmithausnummer_lage       ON ax_lagebezeichnungmithausnummer USING btree (gemeinde, lage);
 --EATE INDEX ax_lagebezeichnungmithausnummer_hat        ON ax_lagebezeichnungmithausnummer USING gin   (hat);
@@ -760,5 +777,6 @@
 
 CREATE UNIQUE INDEX ax_lagebezeichnungmitpseudonummer_gml ON ax_lagebezeichnungmitpseudonummer USING btree (gml_id, beginnt);
---EATE INDEX ax_lagebezeichnungmitpseudonummer_gehoertzu ON ax_lagebezeichnungmitpseudonummer USING btree (gehoertzu);
+CREATE INDEX ax_lagebezeichnungmitpseudonummer_gml16      ON ax_lagebezeichnungmitpseudonummer USING btree (substring(gml_id,1,16)); -- ALKIS-Relation
+--EATE INDEX ax_lagebezeichnungmitpseudonummer_gehoertzu  ON ax_lagebezeichnungmitpseudonummer USING btree (gehoertzu);
 
 COMMENT ON TABLE  ax_lagebezeichnungmitpseudonummer        IS 'Angaben zur Lage: (NREO) "Lagebezeichnung mit Pseudonummer" ist die von der KatasterbehÃ¶rde fÃŒr ein bestehendes oder geplantes GebÃ€ude vergebene Lagebezeichnung und ggf. einem Adressierungszusatz, wenn von der Gemeinde fÃŒr das GebÃ€ude keine Lagebezeichnung mit Hausnummer vergeben wurde (z.B. Kirche, NebengebÃ€ude).';
@@ -1488,4 +1506,5 @@
 
 CREATE UNIQUE INDEX id_ax_person_gml ON ax_person USING btree (gml_id, beginnt);
+CREATE INDEX        ax_person_gml16  ON ax_person USING btree (substring(gml_id,1,16)); -- ALKIS-Relation
 
 CREATE INDEX ax_person_hat  ON ax_person  USING gin  (hat);
@@ -1518,8 +1537,12 @@
 --Es handelt sich um die inverse Relationsrichtung.';
 
+
 --AX_Personengruppe
 -- Objektart: AX_Personengruppe Kennung: 21002
 -- 'Personengruppe' ist die Zusammenfassung von Personen unter einem Ordnungsbegriff.
 -- ** Tabelle bisher noch nicht generiert
+
+-- CREATE INDEX ax_personengruppe_gml16 ON ax_personengruppe USING btree (substring(gml_id,1,16)); -- ALKIS-Relation
+
 
 -- A n s c h r i f t
@@ -1556,4 +1579,5 @@
 
 CREATE UNIQUE INDEX ax_anschrift_gml  ON ax_anschrift  USING btree (gml_id, beginnt);
+CREATE INDEX       ax_anschrift_gml16 ON ax_anschrift  USING btree (substring(gml_id,1,16)); -- ALKIS-Relation
 --EATE        INDEX ax_anschrift_bsa  ON ax_anschrift  USING gin   (beziehtsichauf);
 --EATE        INDEX ax_anschrift_gz   ON ax_anschrift  USING gin   (gehoertzu);
@@ -1593,4 +1617,8 @@
 COMMENT ON COLUMN ax_verwaltung.haengtan       IS '-> Beziehung zu ax_person (1): Durch die Relation ''Verwaltung'' hÃ€ngt an ''Person'' wird die Verwaltung namentlich benannt.';
 
+CREATE UNIQUE INDEX ax_verwaltung_gml  ON ax_verwaltung USING btree (gml_id, beginnt);
+CREATE INDEX ax_verwaltung_gml16       ON ax_verwaltung USING btree (substring(gml_id,1,16)); -- ALKIS-Relation
+CREATE INDEX ax_verwaltung_han         ON ax_verwaltung USING btree (haengtan);
+
 
 -- V e r t r e t u n g
@@ -1610,5 +1638,5 @@
      haengtan            character varying,    --> ax_person
      beziehtsichauf      character varying[],  --> ax_flurstueck
-      CONSTRAINT ax_vertretung_pk PRIMARY KEY (ogc_fid)
+     CONSTRAINT ax_vertretung_pk PRIMARY KEY (ogc_fid)
 );
 SELECT AddGeometryColumn('ax_vertretung','dummy',:alkis_epsg,'POINT',2);
@@ -1620,4 +1648,7 @@
 COMMENT ON COLUMN ax_vertretung.haengtan       IS '-> Beziehung zu ax_person (1): Die Relation ''Vertretung'' hÃ€ngt an ''Person'' sagt aus, welche Person die Vertretung wahrnimmt.';
 COMMENT ON COLUMN ax_vertretung.beziehtsichauf IS '-> Beziehung zu ax_flurstueck (0..*): Die Relation ''Vertretung'' bezieht sich auf ''FlurstÃŒck'' sagt aus, fÃŒr welche FlurstÃŒcke die Vertretung wahrgenommen wird.';
+
+CREATE INDEX ax_vertretung_han         ON ax_vertretung USING btree (haengtan);
+CREATE INDEX ax_vertretung_bezauf      ON ax_vertretung USING gin   (beziehtsichauf);
 
 
@@ -1652,4 +1683,6 @@
 
 CREATE UNIQUE INDEX ax_namensnummer_gml   ON ax_namensnummer  USING btree (gml_id, beginnt);
+CREATE INDEX  ax_namensnummer_gml16       ON ax_namensnummer  USING btree (substring(gml_id,1,16)); -- ALKIS-Relation
+
 CREATE        INDEX ax_namensnummer_barvz ON ax_namensnummer  USING btree (bestehtausrechtsverhaeltnissenzu);
 CREATE        INDEX ax_namensnummer_ben   ON ax_namensnummer  USING btree (benennt);
@@ -1739,4 +1772,5 @@
 
 CREATE UNIQUE INDEX ax_buchungsstelle_gml ON ax_buchungsstelle USING btree (gml_id, beginnt);
+CREATE INDEX ax_buchungsstelle_gml16  ON ax_buchungsstelle  USING btree (substring(gml_id,1,16)); -- ALKIS-Relation
 
 CREATE INDEX ax_buchungsstelle_an     ON ax_buchungsstelle  USING gin  (an);
@@ -1820,4 +1854,5 @@
 CREATE INDEX ax_gebaeude_geom_idx   ON ax_gebaeude USING gist (wkb_geometry);
 CREATE UNIQUE INDEX ax_gebaeude_gml ON ax_gebaeude USING btree (gml_id, beginnt);
+CREATE INDEX ax_gebaeude_gml16      ON ax_gebaeude USING btree (substring(gml_id,1,16)); -- ALKIS-Relation
 
 CREATE INDEX ax_gebaeude_geh  ON ax_gebaeude USING gin   (gehoert);
