Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: Hash in Klartext?

  1. #11
    sly
    sly ist offline Neuer Benutzer
    Registriert seit
    05.10.2010
    Beiträge
    20

    Standard

    Ok. Denke ich werde es erstmal einfach so belassen. Aber eine viel wichtigere Frage:

    Scheinbar werden Änderungen, die per spi_exec_query("UPDATE... abgeschickt werden und auch mit "status: SPI_OK_UPDATE" quittiert werden nicht sofort ausgeführt. Kann das sein? In meinem Fall müssen die Änderungen unbedingt sofort ausgeführt werden.

  2. #12
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Was genau meinst du mit "werden nicht sofort ausgeführt"?
    Deine Stored Procedure läuft innerhalb einer Transaktion. Erst wenn diese beendet ist, werden sämtliche Änderungen committed und damit für andere sichtbar.
    Deine eigene Transaktion sieht die Änderungen jedoch sofort.

    Zu dem Thema solltest du dich mal zur Isolation von Transaktionen belesen.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  3. #13
    sly
    sly ist offline Neuer Benutzer
    Registriert seit
    05.10.2010
    Beiträge
    20

    Standard

    Also folgendes Szenario. Eine Tabelle mit Postgis Polygonen existiert. In einer plperl Funktion frage ich ab, ob sich 2 postgis Polygone überschneiden. Ist das der Fall, dann speichere ich den Überschneidungsbereich als neues Polygon in die Tabelle und beschneide die zwei anderen um den Überschneidungs-Bereich.

    Wenn ich nun innerhalb der Funktion, nachdem diese drei Operationen stattgefunden haben, abfrage, wie viele Polygone in der Tabelle sind, dann erhalte ich einen erhöhten Wert im Vergleich zum Ausgangszustand. Allerdings liefert die Abfrage nach den Abmaßen der Polygone die Ausgangs-Abmessungen und nicht die veränderten! Folglich scheitern weitere Beschneidungen daran, dass nicht die korrekten (durch vorherige Schnitte entstandenen) Abmessungen abgefragt werden können. Innerhalb der Funktion läuft eine Schleife, die jedes Polygon mit jedem verschneiden soll.

  4. #14
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Liest du die Werte erneut ein oder wie fragst du die neuen Abmessungen ab?
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  5. #15
    sly
    sly ist offline Neuer Benutzer
    Registriert seit
    05.10.2010
    Beiträge
    20

    Standard

    Lag wohl an meiner Programmstruktur. Habe mich etwas zu "Isolation von Transaktionen" schlau gemacht und einzelne Funktionen für einzelne Aufgaben geschrieben. Jetzt werden auch die korrekten Abmessungen geholt. Der nächste Knackpunkt ist auch schon da. Der ist allerdings Kopfarbeit und nicht "Technik".

    Vielen, vielen Dank ads.

  6. #16
    sly
    sly ist offline Neuer Benutzer
    Registriert seit
    05.10.2010
    Beiträge
    20

    Standard

    Eine Nachfrage zum Thema "Änderungen übernehmen". Wieso die Änderungen nicht "sofort übernommen" werden ist mir jetzt klar. In den postgresql doc
    PostgreSQL: Documentation: Manuals: PostgreSQL 8.3: COMMIT
    hört es sich für mich so an, als wenn man auch manuell ein COMMIT senden könnte. Ich würde das gerne aus plperl heraus tun, und meine gelesen zu haben, dass es sowohl aus plperl, wie auch plpython heraus gehen müsste. Allein, wie ist die Syntax für den COMMIT-Befehl? Etwa so:
    spi_exec_query("SELECT COMMIT;");
    Und worauf sollte man achten bezüglich Zeitpunkt der Ausführung?

  7. #17
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Deine Stored Procedure wird bereits in einer Transaktion ausgeführt. Du kannst die nicht committen.

    Oh, und die richtige Syntax wäre - wie in der Dokumentation beschrieben - einfach "COMMIT". Ohne "SELECT" davor.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 16.06.2008, 11:51

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum