Rust-rocksdb: las familias de columnas no funcionan junto con un operador de combinación

Creado en 9 oct. 2015  ·  3Comentarios  ·  Fuente: rust-rocksdb/rust-rocksdb

Esto parece que también podría ser un problema con la API de C.

bug

Comentario más útil

Para las personas que están viendo este error: _ ¿Cómo está abriendo la base de datos? _

Encontré el problema y vi que desaparecía si uso DB::open_cf_descriptors() , en lugar de DB::open_cf() . Creo que el problema subyacente es que DB::open_cf() aplica Opciones predeterminadas a cualquier familia de columnas que cree. Las opciones predeterminadas no incluirán un operador de combinación.

A menos que me equivoque:

  • RocksDB quiere que asociemos el operador de combinación individualmente a cada familia de columnas, y no a toda la base de datos.
  • Una solución (o solución alternativa) al hacer uso de familias de columnas y operadores de combinación sería usar set_merge_operator() en las Opciones de la familia de columnas, no en las Opciones de la base de datos. Para hacer eso, se debe llamar open_cf_descriptors() lugar de open_cf() . Espero que esto ayude.

Todos 3 comentarios

¿Cuál es el estado de este error? Necesito mucho esto para un proyecto mío. ¿Puedo ayudar con algo?

@tokahuke Sin cambios desde que se presentó. Lo que ayudaría es la confirmación de si se trata de un error con esta biblioteca contenedora de Rust o si es un problema con la biblioteca anterior de Facebook RocksDB. Si es ascendente, es probable que no podamos abordar nada aquí y sería necesario abrir un problema contra la biblioteca ascendente.

Para las personas que están viendo este error: _ ¿Cómo está abriendo la base de datos? _

Encontré el problema y vi que desaparecía si uso DB::open_cf_descriptors() , en lugar de DB::open_cf() . Creo que el problema subyacente es que DB::open_cf() aplica Opciones predeterminadas a cualquier familia de columnas que cree. Las opciones predeterminadas no incluirán un operador de combinación.

A menos que me equivoque:

  • RocksDB quiere que asociemos el operador de combinación individualmente a cada familia de columnas, y no a toda la base de datos.
  • Una solución (o solución alternativa) al hacer uso de familias de columnas y operadores de combinación sería usar set_merge_operator() en las Opciones de la familia de columnas, no en las Opciones de la base de datos. Para hacer eso, se debe llamar open_cf_descriptors() lugar de open_cf() . Espero que esto ayude.
¿Fue útil esta página
0 / 5 - 0 calificaciones