Skip to content

Multiple sqlitex.Pools giving off by 1 values #110

@delaneyj

Description

@delaneyj

Using sonyflake IDs and getting odd behavior

image

Most of the time its the correct value however I'm getting a ton of off by 1 values
image

When doing something like AggregateID:= stmt.GetInt64("agg_id"). These values all well within 64 bits so not sure what the issue could be. Any thoughts on what I could be doing wrong?

If I call it explicitly via

stmt2 := db.Prep("select * from events where agg_id=132345566607552512;")
	for {
		has, err := stmt2.Step()
		if err != nil {
			log.Fatal(err)
		}
		if !has {
			break
		}
		log.Print(stmt2.GetInt64("agg_id"), stmt2.GetInt64("version"))
	}

EDIT: also oddly I'm getting off by one the other direction as well. 132361724597481473 in sqlite but coming through as 132361724597481472

EDIT2: So I changed ALL ids from int64 to string. Exact same issue! So I narrowed it down.

  1. Have 2 goroutines (A,B) with completely different pools and databases (A.sqlite & B.sqlite)
  2. Get errors
  3. Comment out either pool
  4. Works as expected.
  5. Enable both and delete previous databases
  6. Get errors
  7. A.sqlite contains what I'd expect the contents of B.sqlite to be, B.sqlite is empty!

So is having multiple pools of separate not supported in the same process?

Metadata

Metadata

Assignees

No one assigned

    Labels

    invalidThis doesn't seem rightquestionFurther information is requested

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions