objectbox / objectbox/objectbox-java

Only re-deliver query results if results have changed

Aberta
#975 5 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

enhancement
Linguagem predominante
Java
Estrelas
4.6k
Forks
311
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

Code example probably will be best description here.

@Entity
class KAEntry(
    @Unique val key: String,
    val value: String,
    @Id var id: Long = 0
)

class MyApp : Application() { 
    private lateinit var subs1: DataSubscription
    private lateinit var subs2: DataSubscription
    private lateinit var boxStore: BoxStore
        private set
   
    override fun onCreate() {
        super.onCreate()
        boxStore = MyObjectBox.builder().name("main").androidContext(this).build()
        val box = boxStore.boxFor(KAEntry::class.java)
        box.removeAll() // just for reproducibility, to avoid "unique constraint violation" on second run of app

        subs1 = box.query().equal(KAEntry_.key, "key1")
            .build().subscribe().observer { v ->
                Log.i("MyApp", "triggered for key1" )
            }

        subs2 = box.query().equal(KAEntry_.key, "key2")
            .build().subscribe().observer { v ->
                Log.i("MyApp", "triggered for key2" )
            }

        box.put(KAEntry("key1","some value"))
    }
}

Problem is that even I've only put "key1" object and therefore only first query should trigger it's observer - both actually get triggered:

2021-04-05 14:22:53.263 25926-25962/com.acme I/MyApp: triggered for key1
2021-04-05 14:22:53.263 25926-25963/com.acme I/MyApp: triggered for key2

Either I don't understand something or this observer on query actually bugged.
I can see that triggering observer for only those objects that are changed and are in query result may have some performance impact. Though even in this case I would like to have some way of detecting that change was made to objects that query returns and not any object of this type.

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Nenhum arquivo-fonte, teste ou ponto de entrada é especificado. Comece reproduzindo o exemplo de assinatura de consulta em Kotlin e, em seguida, rastreie a implementação do observador de consultas e seus testes, se houver. O trabalho estará concluído quando os observadores forem notificados somente quando os resultados de suas consultas mudarem ou quando a forma compatível de detectar alterações relevantes nos objetos estiver documentada.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
kotlin
Domínio
databases, mobile-dev
Tipo de issue
Bug
Dificuldade
5/5
Tempo estimado
Mais de uma semana
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
25/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.