objectbox / objectbox/objectbox-java

Upgrading from Objectbox v1.5 to v2.x fails with index on unsupported property

Offen
#712 2 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug
Vorherrschende Sprache
Java
Sterne
4.6k
Forks
311
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Issue Basics

  • ObjectBox version: 1.5 upgrading to 2.x (2.3.4 at time of writing)
  • Reproducibility: always

Reproducing the bug

Create project with objectbox v1.5, define Object with Entity.

@Entity
public class Foo {
@Index private Double Lat;
@Index private Double Lng;
}

Compile and run project, in order to create the objectbox DB and save some instances.

Update the objectbox version in the project to 2.3.4, then update the entity by removing the @Index annotations

Update the entity to
@Entity
public class Foo {
private Double Lat;
private Double Lng;
}

Recompile and run project again. You will get the following Exception:

io.objectbox.exception.DbException: Indexing of float and double is currently unavailable. Please remove the index on Property Lat (5, Double)

Description

This bug has been already mentioned and discussed in the StackOverflow Thread https://stackoverflow.com/questions/54149954/double-field-index-problem-when-upgrading-objectbox-library

Upgrading the objectbox instance from 1.5 to 2.x when having an @Index set on a Double field is impossible for existing apps.

A desired way of handling this would be to remove the @Index from the existing legacy data structure internally and let the app keep the data as before, making a migration to the new objectbox version possible and seamless.

Please fix this issue as an upgrade of the module is impossible.

Code

ObjectBox v1.5

@Entity
public class Foo {
@Index private Double Lat;
@Index private Double Lng;
}

ObjectBox v2.3.4
@Entity
public class Foo {
private Double Lat;
private Double Lng;
}

triggers runtime DbException: "io.objectbox.exception.DbException: Indexing of float and double is currently unavailable. Please remove the index on Property Lat (5, Double)"

Logs & stackstraces

io.objectbox.exception.DbException: Indexing of float and double is currently unavailable. Please remove the index on Property Lat (5, Double)

Misc

Is there anything special about your app?
No

May transactions or multi-threading play a role?
No

Did you find any workarounds to prevent the issue?
No workarounds found to date

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit der im Issue beschriebenen Java-Reproduktion: Erstelle eine v1.5-Datenbank mit indizierten Double-Feldern und führe anschließend ein Upgrade auf ObjectBox 2.3.4 durch, nachdem du die Annotationen entfernt hast. Verfolge die Migrationsbehandlung für den veralteten Index, der die DbException auslöst; abgeschlossen ist die Aufgabe, wenn die vorhandene Datenbank ohne den überflüssigen Index erfolgreich geöffnet wird und ihre Daten behält.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
databases
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.