PGDBE: DbSetScope() benötigt explizites DbGoTop()

Hier dreht es sich um den PostGre Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

PGDBE: DbSetScope() benötigt explizites DbGoTop()

Beitrag von Tom »

Die PGDBE benötigt - anders als die anderen DBEs - nach dem Setzen eines Scopes ein explizites DbGoTop(), sonst bleibt die Ergebnismenge leer. Ich habe das auch schon gemeldet:

https://www.alaska-software.com/scripts ... PDRID=7416
Herzlich,
Tom
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

Re: PGDBE: DbSetScope() benötigt explizites DbGoTop()

Beitrag von dtmackenzie »

Hallo Tom,

manchmal ist die Ergebnismenge nicht (sofort) leer sondern vermutlich unverändert, s. mein Post unten.
Aber wenn mann im Debugger ein Breakpoint setzt, ist sie dann doch inzwischen leer.
Das ist nicht das erste Mal, das mir etwas seltsames Verhalten mit PGDBE und Debugger vorgekommen ist - manchmal habe ich Code gehabt, der im freien Lauf funktioniert, aber nicht wenn ich ein Breakpoint setze.
Die Fälle habe ich aber nur in unserer Anwendung gehabt (die übrigens nun mit PGDBE "live" läuft :D), die konnte ich leider nicht in einer kleinen Testanwendung nachvollziehen um sie melden zu können.
Ich habe manchmal das Gefühl, dass irgendetwas asynchron passiert... :shock:

P.S. Ich habe gerade in der PDR gesehen, dass der akt. Datensatz bleibt obwohl er ausgeschlossen werden soll - das ist doch auch in meinem Fall so, deshalb habe ich gedacht, dass die Ergebnismenge erstmal unverändert bliebe.
Viele Grüße,
David
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: PGDBE: DbSetScope() benötigt explizites DbGoTop()

Beitrag von Tom »

Hallo, David.

Da ich den Debugger nicht nutze, kann ich das nicht nachvollziehen. Es ist offenbar grundsätzlich so, dass sich Scopes nicht von selbst aktualisieren, wie sie das bei den anderen DBEs tun, und das gilt wohl für mehrere Vorgänge (DbSetScope, DbClearScope, aber u.U. auch Deletes und Appends, jedoch nicht). Andreas hat mir geschrieben, dass es im Q2 noch einen weiteren, umfangreichen PGDBE-Fix gibt. Bei aktiven Scopes setze ich jetzt immer das explizite DbGotop ein (das lässt sich über den PP relativ problemlos einbinden), und ansonsten schaue ich mal. :wink:
Herzlich,
Tom
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

Re: PGDBE: DbSetScope() benötigt explizites DbGoTop()

Beitrag von dtmackenzie »

Hallo Tom,

prinzipiell finde ich den Debugger sehr gut und nutze ihn gern.

Es freut mich sehr zu hören, dass Alaska einen umfangreichen PGDBE-Fix vorhaben. PGDBE ist meiner Meinung nach bei weitem die wichtigste strategische Neuerung von Alaska in diesem Jahrhundert. Abgesehen davon, dass es (zumindest) Lesezugriff von "außen" auf die Daten ermöglicht (einschließlich jede Menge nützliche Werkzeuge in der Postgres-Welt), löst es uns von unserer Abhängigkeit vom ADS-Server ab. ADS hat uns lange gute Dienste geleistet, ist aber nicht kostenfrei, begrenzt die Anzahl von Benutzern, ist keine vollwertige Datenbank, hat nicht so eine große Gemeinde und vielleicht auch nicht so eine sichere Zukunft wie Postgres. Irgendwann wird PGDBE zur ersten Wahl für die meisten, glaube ich.
Viele Grüße,
David
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: PGDBE: DbSetScope() benötigt explizites DbGoTop()

Beitrag von Tom »

Hallo, David.

Ich debugge einfach anders. :wink:

Ich finde die PGDBE schlicht großartig. Okay, wer eine wirklich, wirklich komplexe Anwendung hat, der hat deutlich mehr Aufwand mit der Transformation, als das "few lines of code"-Werbeversprechen suggeriert, aber auch dieser Aufwand ist zu bewältigen, und wenn man nicht mit sehr großen Datenbanken hantiert, ist die ISAM-Emulation im Normalfall überall deutlich schneller (und stabiler) als FOXCDX/DBFNTX (und die ADSDBE).

Unser größtes Problem war (teilweise ist es noch nicht ganz gelöst) die Mehrmandantenfähigkeit der Anwendung. Mit DBF und sogar im ADS lässt sich das mit simplen SET DEFAULT- und SET PATH-Kommandos steuern, und explizite Pfadangaben sind nur in bestimmten Servicesituationen nötig. Dadurch ließ sich eine gemeinsame und eine wechselnde Datenmenge elegant abbilden (Teil der Daten sind mandantenübergreifend, andere mandantenbezogen). In der PGDBE gibt es dafür kein Konzept, allerdings gibt es von/bei Alaska ein Strategiepapier dazu. Man kann das, kurz gesagt, über drei Wege abbilden, nämlich über Felder in allen Tabellen, die entsprechend gefiltert werden (sehr aufwendig und fehleranfällig), über Namespaces (unterstützt das Upsize-Tool leider nicht, wäre aber cool) oder über getrennte Datenbanken (bislang der Königsweg). Da es keine Kraft kostet, mehrere Connections zu haben, nutzen wir diesen Weg, aber diese elegante Einfachheit zweier Schalter, die alles andere erledigen, ist dadurch leider weg. Und wir brauchen je User immer zwei aktive Server-Verbindungen mindestens.

Wir werden Ende des Jahres dazu übergehen, auch alles andere, was wir im Moment noch in klassischen Ordnerstrukturen halten (Einstellungen, Dokumente, Bilder usw.) in die Datenbanken zu überführen. Und dann schauen wir mal, wie lange wir DBF und ADS und PG parallel supporten.
Herzlich,
Tom
Antworten