Die UnindexedProperty von App Engine enthält seltsamen Code

9

Bitte helfen Sie mir, dies zu verstehen:

In v1.6.6 ist es in Zeile 2744 von google/appengine/ext/db/__init__.py :

%Vor%

Nachdem sie den indizierten Parameter auf "False" beschränkt haben - setzen sie ihn auf "True"!

    
theosp 04.06.2012, 15:40
quelle

1 Antwort

4

Vor 1.2.2 konnten Sie Abfragen nach beliebigen Eigenschaftstypen filtern, auch nach Text und Blob. Sie haben nur leere Listen zurückgegeben, aber es hat funktioniert. In Version 1.2.2 wurde das Attribut indexed für Eigenschaften eingeführt, mit dem Sie die Indizierung ausgewählter Eigenschaften deaktivieren können [1]. Seitdem muss die Eigenschaft, für die Sie eine Abfrage durchführen möchten, indiziert werden oder eine Ausnahme auslösen.

Wir wissen, dass Text- und Blob-Eigenschaften nicht indiziert werden können. Wenn Sie nichts anderes ändern, würden Abfragen für diese Eigenschaften Ausnahmen von 1.2.2 auslösen (was sie vorher nicht getan haben). Um keine Regression einzuführen und bestehende Apps zu unterbrechen, wurde die Zeile kwds['indexed'] = True zur Klasse UnindexedProperty hinzugefügt.

Wenn wir die Kontrolle über den gesamten abhängigen Code hätten, wäre es eine sauberere Lösung gewesen, eine Ausnahme auszulösen. Aber im Hinblick darauf, bestehende Apps nicht zu zerstören, wurde beschlossen, sie zu patchen.

Sie können es selbst ausprobieren, indem Sie kwds['indexed'] = True in kwds['indexed'] = False ändern und dieses Snippet ausführen:

%Vor%

[1] Ссылка

    
schuppe 03.07.2012, 16:46
quelle

Tags und Links