Skip to content

Fix rowid resolution#6

Open
misterEggroll wants to merge 24 commits intomisterEggroll:masterfrom
skit-ai:fix-rowid-resolution
Open

Fix rowid resolution#6
misterEggroll wants to merge 24 commits intomisterEggroll:masterfrom
skit-ai:fix-rowid-resolution

Conversation

@misterEggroll
Copy link
Owner

When the no. of rows > 1,000,000, then the query SELECT id FROM table_name WHERE rowid = rowID results in the id variable having the value 1.021e+6 which cannot be converted to uint using strconv.ParseUint.

Instead, if id is declared with type float64. Then no such issues are observed since *sql.DB will resolve the ID as float64 internally.

akshaydeshraj and others added 24 commits August 16, 2019 16:17
add: Fn to remove constraint from a table
…limit

add: Fn to determine dialect-specific byte insertion limit
* If records go beyond 1000000, the ID returned by the oracle driver is of type float64 instead of uint(uint64)
* To mitigate this issue, introducing the `primary` struct
* The `primary` struct implements the `Scanner` interface to convert float64 and int64 into a unit ID
* The `primary` struct implements the `Valuer` interface to return the uint value of the ID it encapsulates
* Introducing the `ORM` struct which makes use of the `primary` struct to encapsulate the ID returned by the DB
* This is to mitigate the scenario where the reference to the rowid of the oracle entry is returned as an int64.
* This int64 is converted to uint internally by the Scan() implementation of the `primary` struct
* Hence, we need to access that converted value by checking if the primary field is of type `primary`
refactor: Export `Primary` struct outside gorm package
refactor: Remove primary key and foreign key custom structs
refactor: Use primaryField.Field.Uint to get uint when resolving row ID
feat: add support for setting nullable
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants