batmanhm
05-10-2011, 10:12 AM
I have HM on 2 computers, playing alternatively. I transfer my hand history almost daily, using the "Export all hands to hard drive" function in Sessions tab.
Bug no 1: When you export RUSH hands to disk and import it in a new DB, they are not seen as RUSH hands, they are seen as normal hands.
Bug no 2: When you check for duplicate hands, you are checking for the hand history to match rather than checking for identical hand id, which results is hands which are actually duplicated to be imported serveral times. Even when the only difference between the HH text is just a 'new line' character.
Bug no 3: Sometimes, somewhere along the line of action - import from Full Tilt hand history file, Export to Disk, Import from Folder - your software is adding a new line character to a hand history text(or maybe at the end of a hand history file which it exports, I don't know).
But 1 is easy to reproduce. Bug 2 as well(you can just export a hand, add a new line at the end, and import it using import from folder function). I don't know how you could reprocude Bug 3, since it seems to be very rare. I moved over about 30k hands this time and I got him only in 4 of them.
Below is how bugs 2 and 3 were proven:
After a while, I started to notice that the number of hands in the 2 db is not matching. My investigation was just pointless, so I just decided to transfer all from one side to another and then vice versa.
After I exported the hands from Machine 1, I decided to reimport them just to make sure that all of them were exported. I was expecting HM to see all hands which I was trying to import as duplicates. However, I was surprised to see that 4 of the exported hands(from the same DB!) were actually seen as new hands.
I am no SQL expert, but I started to look a bit into it. All the hands which I have in the DB are from Full Tilt Poker, so it was that easy:
select count(cast(SUBSTR(handhistory,23,11) as bigint)) from handhistories;
Result: 168987
select count(distinct cast(SUBSTR(handhistory,23,11) as bigint)) from handhistories;
Result: 168983
select count(t2) as t3, t1 from (select pokerhand_id as t2, cast(SUBSTR(handhistory,23,11) as bigint) as t1 from handhistories) as my_fake_table group by t1 order by t3 desc;
Result: the duplicate hand ids as the first records.
One of the duplicate hands is:
First record, imported directly from Full Tilt HH file:
Full Tilt Poker Game #30291165132: Table Mercury - $0.25/$0.50 - No Limit Hold'em - 08:18:10 ET - 2011/05/04
Seat 1: batilt ($21.50)
Seat 2: Boztastic ($56.20)
Seat 3: KoReaNcHoBO ($50)
Seat 4: larsrit ($88.10)
Seat 5: rinarina1 ($39.50)
Seat 6: rtutn ($69.25)
Seat 7: KrzysiekJ ($59.30)
Seat 8: xntriq ($69.55)
Seat 9: FullTiltPoker81 ($48.70)
KrzysiekJ posts the small blind of $0.25
xntriq posts the big blind of $0.50
The button is in seat #6
*** HOLE CARDS ***
Dealt to batilt [7s 6d]
FullTiltPoker81 folds
batilt folds
Boztastic folds
KoReaNcHoBO folds
larsrit has 8 seconds left to act
larsrit raises to $1.40
rinarina1 folds
rtutn folds
KrzysiekJ folds
xntriq calls $0.90
*** FLOP *** [3d 7c Jh]
xntriq checks
larsrit bets $2
xntriq folds
Uncalled bet of $2 returned to larsrit
larsrit mucks
larsrit wins the pot ($2.90)
*** SUMMARY ***
Total pot $3.05 | Rake $0.15
Board: [3d 7c Jh]
Seat 1: batilt didn't bet (folded)
Seat 2: Boztastic didn't bet (folded)
Seat 3: KoReaNcHoBO didn't bet (folded)
Seat 4: larsrit collected ($2.90), mucked
Seat 5: rinarina1 didn't bet (folded)
Seat 6: rtutn (button) didn't bet (folded)
Seat 7: KrzysiekJ (small blind) folded before the Flop
Seat 8: xntriq (big blind) folded on the Flop
Seat 9: FullTiltPoker81 didn't bet (folded)
Second record, imported from the file resulted from the export from HM:
Full Tilt Poker Game #30291165132: Table Mercury - $0.25/$0.50 - No Limit Hold'em - 08:18:10 ET - 2011/05/04
Seat 1: batilt ($21.50)
Seat 2: Boztastic ($56.20)
Seat 3: KoReaNcHoBO ($50)
Seat 4: larsrit ($88.10)
Seat 5: rinarina1 ($39.50)
Seat 6: rtutn ($69.25)
Seat 7: KrzysiekJ ($59.30)
Seat 8: xntriq ($69.55)
Seat 9: FullTiltPoker81 ($48.70)
KrzysiekJ posts the small blind of $0.25
xntriq posts the big blind of $0.50
The button is in seat #6
*** HOLE CARDS ***
Dealt to batilt [7s 6d]
FullTiltPoker81 folds
batilt folds
Boztastic folds
KoReaNcHoBO folds
larsrit has 8 seconds left to act
larsrit raises to $1.40
rinarina1 folds
rtutn folds
KrzysiekJ folds
xntriq calls $0.90
*** FLOP *** [3d 7c Jh]
xntriq checks
larsrit bets $2
xntriq folds
Uncalled bet of $2 returned to larsrit
larsrit mucks
larsrit wins the pot ($2.90)
*** SUMMARY ***
Total pot $3.05 | Rake $0.15
Board: [3d 7c Jh]
Seat 1: batilt didn't bet (folded)
Seat 2: Boztastic didn't bet (folded)
Seat 3: KoReaNcHoBO didn't bet (folded)
Seat 4: larsrit collected ($2.90), mucked
Seat 5: rinarina1 didn't bet (folded)
Seat 6: rtutn (button) didn't bet (folded)
Seat 7: KrzysiekJ (small blind) folded before the Flop
Seat 8: xntriq (big blind) folded on the Flop
Seat 9: FullTiltPoker81 didn't bet (folded)
The only difference I notice between them is the number of lines at the end of the text(4 in the first one, 5 in the second one).
Bug no 1: When you export RUSH hands to disk and import it in a new DB, they are not seen as RUSH hands, they are seen as normal hands.
Bug no 2: When you check for duplicate hands, you are checking for the hand history to match rather than checking for identical hand id, which results is hands which are actually duplicated to be imported serveral times. Even when the only difference between the HH text is just a 'new line' character.
Bug no 3: Sometimes, somewhere along the line of action - import from Full Tilt hand history file, Export to Disk, Import from Folder - your software is adding a new line character to a hand history text(or maybe at the end of a hand history file which it exports, I don't know).
But 1 is easy to reproduce. Bug 2 as well(you can just export a hand, add a new line at the end, and import it using import from folder function). I don't know how you could reprocude Bug 3, since it seems to be very rare. I moved over about 30k hands this time and I got him only in 4 of them.
Below is how bugs 2 and 3 were proven:
After a while, I started to notice that the number of hands in the 2 db is not matching. My investigation was just pointless, so I just decided to transfer all from one side to another and then vice versa.
After I exported the hands from Machine 1, I decided to reimport them just to make sure that all of them were exported. I was expecting HM to see all hands which I was trying to import as duplicates. However, I was surprised to see that 4 of the exported hands(from the same DB!) were actually seen as new hands.
I am no SQL expert, but I started to look a bit into it. All the hands which I have in the DB are from Full Tilt Poker, so it was that easy:
select count(cast(SUBSTR(handhistory,23,11) as bigint)) from handhistories;
Result: 168987
select count(distinct cast(SUBSTR(handhistory,23,11) as bigint)) from handhistories;
Result: 168983
select count(t2) as t3, t1 from (select pokerhand_id as t2, cast(SUBSTR(handhistory,23,11) as bigint) as t1 from handhistories) as my_fake_table group by t1 order by t3 desc;
Result: the duplicate hand ids as the first records.
One of the duplicate hands is:
First record, imported directly from Full Tilt HH file:
Full Tilt Poker Game #30291165132: Table Mercury - $0.25/$0.50 - No Limit Hold'em - 08:18:10 ET - 2011/05/04
Seat 1: batilt ($21.50)
Seat 2: Boztastic ($56.20)
Seat 3: KoReaNcHoBO ($50)
Seat 4: larsrit ($88.10)
Seat 5: rinarina1 ($39.50)
Seat 6: rtutn ($69.25)
Seat 7: KrzysiekJ ($59.30)
Seat 8: xntriq ($69.55)
Seat 9: FullTiltPoker81 ($48.70)
KrzysiekJ posts the small blind of $0.25
xntriq posts the big blind of $0.50
The button is in seat #6
*** HOLE CARDS ***
Dealt to batilt [7s 6d]
FullTiltPoker81 folds
batilt folds
Boztastic folds
KoReaNcHoBO folds
larsrit has 8 seconds left to act
larsrit raises to $1.40
rinarina1 folds
rtutn folds
KrzysiekJ folds
xntriq calls $0.90
*** FLOP *** [3d 7c Jh]
xntriq checks
larsrit bets $2
xntriq folds
Uncalled bet of $2 returned to larsrit
larsrit mucks
larsrit wins the pot ($2.90)
*** SUMMARY ***
Total pot $3.05 | Rake $0.15
Board: [3d 7c Jh]
Seat 1: batilt didn't bet (folded)
Seat 2: Boztastic didn't bet (folded)
Seat 3: KoReaNcHoBO didn't bet (folded)
Seat 4: larsrit collected ($2.90), mucked
Seat 5: rinarina1 didn't bet (folded)
Seat 6: rtutn (button) didn't bet (folded)
Seat 7: KrzysiekJ (small blind) folded before the Flop
Seat 8: xntriq (big blind) folded on the Flop
Seat 9: FullTiltPoker81 didn't bet (folded)
Second record, imported from the file resulted from the export from HM:
Full Tilt Poker Game #30291165132: Table Mercury - $0.25/$0.50 - No Limit Hold'em - 08:18:10 ET - 2011/05/04
Seat 1: batilt ($21.50)
Seat 2: Boztastic ($56.20)
Seat 3: KoReaNcHoBO ($50)
Seat 4: larsrit ($88.10)
Seat 5: rinarina1 ($39.50)
Seat 6: rtutn ($69.25)
Seat 7: KrzysiekJ ($59.30)
Seat 8: xntriq ($69.55)
Seat 9: FullTiltPoker81 ($48.70)
KrzysiekJ posts the small blind of $0.25
xntriq posts the big blind of $0.50
The button is in seat #6
*** HOLE CARDS ***
Dealt to batilt [7s 6d]
FullTiltPoker81 folds
batilt folds
Boztastic folds
KoReaNcHoBO folds
larsrit has 8 seconds left to act
larsrit raises to $1.40
rinarina1 folds
rtutn folds
KrzysiekJ folds
xntriq calls $0.90
*** FLOP *** [3d 7c Jh]
xntriq checks
larsrit bets $2
xntriq folds
Uncalled bet of $2 returned to larsrit
larsrit mucks
larsrit wins the pot ($2.90)
*** SUMMARY ***
Total pot $3.05 | Rake $0.15
Board: [3d 7c Jh]
Seat 1: batilt didn't bet (folded)
Seat 2: Boztastic didn't bet (folded)
Seat 3: KoReaNcHoBO didn't bet (folded)
Seat 4: larsrit collected ($2.90), mucked
Seat 5: rinarina1 didn't bet (folded)
Seat 6: rtutn (button) didn't bet (folded)
Seat 7: KrzysiekJ (small blind) folded before the Flop
Seat 8: xntriq (big blind) folded on the Flop
Seat 9: FullTiltPoker81 didn't bet (folded)
The only difference I notice between them is the number of lines at the end of the text(4 in the first one, 5 in the second one).