Skip to content

Incomplete Data Retrieval in Go Bindings Compared to C++ Interface #452

@suizouwuya

Description

@suizouwuya

I'm encountering an issue where the Go LevelDB bindings fail to retrieve all data in specific scenarios, while the native C++ interface works as expected.

Observed Behavior:

  • When using the Go interface to read data from a LevelDB instance managed by C++ code, some entries are missing from query results
  • The same database shows complete data when accessed through the C++ LevelDB API
  • Issue appears consistently in specific read patterns (e.g., range scans, sequential iterations)

Expected Behavior:

  • Go bindings should return identical results to the C++ implementation
  • Consistent data retrieval across both interfaces

Reproduction Steps:

  1. Create database using C++ LevelDB implementation
  2. Write batch data (mixed size entries, ~3300k records with string&binary mix)
  3. Perform range scan using Go bindings
  4. Compare results with C++ iterator output

Environment:

  • Go Version: [1.24.3]
  • LevelDB Binding Version: [latest of 2025-05-24]
  • OS: [e.g., Linux openEuler release 24.03(LTS)]
  • C++ LevelDB Version: [1.20]

Usage like:

iter := db.NewIterator(nil, nil)
for iter.Next() {
	key := iter.Key()
	value := iter.Value()
	...
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions