There's a flag called flg_f_has_position in the holdem_hand_player_detail table. It should be true when a player is in position (last to act) on the flop and false otherwise, but this data is not being set correctly. This applies also to the flags flg_t_has_position and flg_r_has_position for turn and river.
The way these flags get set, is that if a player is on the button and sees the particular street, then the flag is true, otherwise it's false. To me that makes the whole flag completely useless. Surely a player is in position also if he's under the gun and only the big blind calls and sees the flop with him. This is very important flag for data analysis, because it's completely different thing to check being out of position (and possibly plan to check-raise) than check when you're last to act. Also betting last to act in a multi-way pot, when everyone has checked to you and no one seems to want the pot, may very well be a positional steal, but betting out of position is never that.
I also think that having correct data in the database is a higher priority problem than any performance improvements or new features.
You can see for yourself how flg_f_has_position is set by running the following queries. The first one returns hands, where there's a flop but no one is in position and displays whether player on the button saw the flop or not (in all of the hands he didn't). The second query returns the hand's in which there is a player with has position -flag set to true and also whether or not the button saw the flop (in all of the hands he did).
select
pd.id_hand,
sum( case when ps.position = 0 and ps.flg_f_saw is true then 1 else 0 end ) as button_saw_flop
from
holdem_hand_player_detail as pd,
holdem_hand_player_statistics as ps
where
pd.id_hand = ps.id_hand and
pd.id_player = ps.id_player and
pd.id_hand < 10000
group by
pd.id_hand
having
sum( case when ps.flg_f_saw is true then 1 else 0 end ) > 0 and
sum( case when pd.flg_f_has_position is true then 1 else 0 end ) = 0;
------------------------------------------------------------------------------------------
select
pd.id_hand,
sum( case when ps.position = 0 and ps.flg_f_saw is true then 1 else 0 end ) as button_saw_flop
from
holdem_hand_player_detail as pd,
holdem_hand_player_statistics as ps
where
pd.id_hand = ps.id_hand and
pd.id_player = ps.id_player and
pd.id_hand < 10000
group by
pd.id_hand
having
sum( case when ps.flg_f_saw is true then 1 else 0 end ) > 0 and
sum( case when pd.flg_f_has_position is true then 1 else 0 end ) = 1;