<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8"> <TITLE>Free Poker DB Tabledesign</TITLE> </HEAD> <BODY LANG="en-GB"> <P>See commit comments for version info, see status.txt for status.</P> <P>Direct suggestions, praise and animal names to steffen@sycamoretest.info or check readme-overview.txt for more contacts</P> <P>I decided to be generous on the sizes of the types - if computing experience shows one thing then its that it will come back to bite you in the ass if you save 2 bits in the wrong place. If performance and/or db size are too bad we can still shrink some fields.</P> <p>Relationships are noted in the comment (need to double check that all are listed)</P> <p>If you want more comments or if anything is confusing or bad let me know.</P> <p>All money/cash amounts are stored in cents/pennies/whatever (e.g. $4.27 would be stored a 427). Chips are stored as-is (e.g. 3675 chips would be stored as 3675).</P> <p>Notes on use/editing:</P> <p>Any change to this must be carried to to the table creation code in fpdb_db.py or at least an entry to known bugs is to be made.</P> <P>If the code (in particular the importer) and this document disagree then this document is to be considered authorative.</P> <p><b>License</b><br> Trademarks of third parties have been used under Fair Use or similar laws.<br> Copyright 2008 Steffen Jobbagy-Felso<br> Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 as published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license can be found in fdl-1.2.txt<br> The program itself is licensed under AGPLv3, see agpl-3.0.txt</p> <p>See readme.txt for copying</P> <p><B>Table settings</B></P> <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0> <TR VALIGN=TOP> <TD><P>Field name</P></TD> <TD><P>Type</P></TD> <TD><P>Comment</P></TD> </TR> <TR VALIGN=TOP> <TD><P>version</P></TD> <TD><P>smallint</P></TD> <TD><P>the git version of the database (ie. table design changes and major bugfixes require a bump)</P></TD> </TR> </TABLE> <p><B>Table players</B></P> <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0> <TR VALIGN=TOP> <TD><P>Field name</P></TD> <TD><P>Type</P></TD> <TD><P>Comment</P></TD> </TR> <TR VALIGN=TOP> <TD><P>id</P></TD> <TD><P>int</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>name</P></TD> <TD><P>varchar(32)</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>site_id</P></TD> <TD><P>smallint</P></TD> <TD><P>references sites.id</P></TD> </TR> <TR VALIGN=TOP> <TD><P>comment</P></TD> <TD><P>text</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>comment_ts</P></TD> <TD><P>datetime (in UTC)</P></TD> <TD><P><BR></P></TD> </TR> </TABLE> <p><BR></P> <p><B>Table autorates</B></P> <p>An autorating is a computer-"recognised" label/category for a player. Examples could include "Calling Station" if a player has <20% each for aggression and folding postflop. Or "Tight-Aggressive/Aggressive" for players with <20% VPIP, >10% PFR and >40% postflop aggression.</P> <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0> <TR VALIGN=TOP> <TD><P>Field name</P></TD> <TD><P>Type</P></TD> <TD><P>Comment</P></TD> </TR> <TR VALIGN=TOP> <TD><P>id</P></TD> <TD><P>bigint</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>player_id</P></TD> <TD><P>int</P></TD> <TD><P>references players.id</P></TD> </TR> <TR VALIGN=TOP> <TD><P>gametype_id</P></TD> <TD><P>smallint</P></TD> <TD><P>references gametypes.id</P></TD> </TR> <TR VALIGN=TOP> <TD><P>description</P></TD> <TD><P>varchar(50)</P></TD> <TD><P>autorating description</P></TD> </TR> <TR VALIGN=TOP> <TD><P>short_desc</P></TD> <TD><P>char(8)</P></TD> <TD><P>short description e.g. for display in HUD</P></TD> </TR> <TR VALIGN=TOP> <TD><P>rating_time</P></TD> <TD><P>datetime (in UTC)</P></TD> <TD><P>timestamp of rating</P></TD> </TR> <TR VALIGN=TOP> <TD><P>hand_count</P></TD> <TD><P>int</P></TD> <TD><P>number of hands rating is based on</P></TD> </TR> </TABLE> <p><BR></P> <p><B>Table gametypes</B></P> <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0> <TR VALIGN=TOP> <TD><P>Field name</P></TD> <TD><P>Type</P></TD> <TD><P>Comment</P></TD> </TR> <TR VALIGN=TOP> <TD><P>id</P></TD> <TD><P>smallint</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>site_id</P></TD> <TD><P>smallint</P></TD> <TD><P>references sites.id</P></TD> </TR> <TR VALIGN=TOP> <TD><P>type</P></TD> <TD><P>char(4)</P></TD> <TD><p>valid entries:<br> ring - ringgames aka cash games<br> tour - tournament incl SnG</P></TD> </TR> <TR VALIGN=TOP> <TD><P>category</P></TD> <TD><P>varchar(9)</P></TD> <TD><p>valid entries:<br> holdem=Texas Hold'em<br> omahahi=Omaha High only<br> omahahilo=Omaha 8 or better<br> razz=Razz<br> studhi=7 Card Stud High only<br> studhl=7 Card Stud 8 orbetter</p></TD> </TR> <TR VALIGN=TOP> <TD><P>limit_type</P></TD> <TD><P>char(2)</P></TD> <TD><p>nl=No Limit<br> cn=Cap No Limit<br> pl=Pot Limit<br> cp=Cap Pot Limit<br> fl=Fixed Limit</P></TD> </TR> <TR VALIGN=TOP> <TD><P>small_blind</P></TD> <TD><P>int</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>big_blind</P></TD> <TD><P>int</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>small_bet</P></TD> <TD><P>int</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>big_bet</P></TD> <TD><P>int</P></TD> <TD><P><BR></P></TD> </TR> </TABLE> <p><BR></P> <p><B>Table sites</B></P> <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0> <TR VALIGN=TOP> <TD><P>Field name</P></TD> <TD><P>Type</P></TD> <TD><P>Comment</P></TD> </TR> <TR VALIGN=TOP> <TD><P>id</P></TD> <TD><P>smallint</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>name</P></TD> <TD><P>varchar(32)</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>currency</P></TD> <TD><P>char(3)</P></TD> <TD><P>currency code, e.g. USD, GBP, EUR</P></TD> </TR> </TABLE> <p><BR></P> <p><B>Table hands</B></P> <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0> <TR VALIGN=TOP> <TD><P>Field Name</P></TD> <TD><P>Type</P></TD> <TD><P>Comment</P></TD> </TR> <TR VALIGN=TOP> <TD><P>id</P></TD> <TD><P>bigint</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>site_hand_no</P></TD> <TD><P>bigint</P></TD> <TD><P>the site's hand number</P></TD> </TR> <TR VALIGN=TOP> <TD><P>gametype_id</P></TD> <TD><P>smallint</P></TD> <TD><P>references gametypes.id</P></TD> </TR> <TR VALIGN=TOP> <TD><P>hand_start</P></TD> <TD><P>datetime (in UTC)</P></TD> <TD><P>start date&time of the hand</P></TD> </TR> <TR VALIGN=TOP> <TD><P>seats</P></TD> <TD><P>smallint</P></TD> <TD><P>number of used seats (ie. that got dealt cards)</P></TD> </TR> <TR VALIGN=TOP> <TD><P>comment</P></TD> <TD><P>text</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>comment_ts</P></TD> <TD><P>datetime (in UTC)</P></TD> <TD><P><BR></P></TD> </TR> </TABLE> <p><BR></P> <p><B>Table board_cards</B></P> <p>cardX -> can be 1 through 5</P> <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0> <TR VALIGN=TOP> <TD> <P>Field Name</P> </TD> <TD> <P>Type</P> </TD> <TD> <P>Comment</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>id</P> </TD> <TD> <P>bigint</P> </TD> <TD> <P><BR> </P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>hand_id</P> </TD> <TD> <P>bigint</P> </TD> <TD> <P>the site's hand number</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>cardX_value</P> </TD> <TD> <P>smallint</P> </TD> <TD> <P>2-10=2-10, J=11, Q=12, K=13, A=14 (even in razz), unknown/no card=x</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>cardX_suit</P> </TD> <TD> <P>char(1)</P> </TD> <TD> <P>h=hearts, s=spades, d=diamonds, c=clubs, unknown/no card=x</P> </TD> </TR> </TABLE> <p><BR> </P> <p><B>Table hands_players</B></P> <p>cardX: can be 1 through 7, one for each card. In holdem/omaha this stores the hole cards so 3-7 or 5-7 are empty</P> <p>I did not separate this into an extra table because I felt the lost space is not sufficiently large. Also the benefit for searching is far less relevant.</P> <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0> <TR VALIGN=TOP><TD><P>Field Name</P></TD><TD><P>Type</P></TD><TD><P>Comment</P></TD></TR> <TR VALIGN=TOP><TD><P>id</P></TD><TD><P>bigint</P></TD><TD><P><BR></P></TD></TR> <TR VALIGN=TOP><TD><P>hand_id</P></TD><TD><P>bigint</P></TD><TD><P>references hands_stud.id</P></TD></TR> <TR VALIGN=TOP><TD><P>player_id</P></TD><TD><P>int</P></TD><TD><P>references players.id</P></TD></TR> <TR VALIGN=TOP><TD><P>player_startcash</P></TD><TD><P>int</P></TD><TD><P><BR></P></TD></TR> <TR VALIGN=TOP><TD><P>position</P></TD><TD><P>char(1)</P></TD> <TD><p>BB=B, SB=S, Button=0, Cutoff=1, etc.</P> <P>This is used in holdem/omaha only.</P></TD></TR> <TR VALIGN=TOP><TD><P>ante</P></TD><TD><P>int</P></TD><TD><P>note: for cash this couldbe boolean, but in tourneys you may enter a hand with less thanthe full ante</P></TD></TR> <TR VALIGN=TOP><TD><P>cardX_value</P></TD><TD><P>smallint</P></TD> <TD><p>2-10=2-10, J=11, Q=12, K=13, A=14 (even in razz), unknown/no card=x</P> <P>see note above table</P></TD></TR> <TR VALIGN=TOP><TD><P>cardX_suit</P></TD><TD><P>char(1)</P></TD><TD><P>h=hearts, s=spades, d=diamonds, c=clubs, unknown/no card=x</P></TD></TR> <TR VALIGN=TOP><TD><P>winnings</P></TD><TD><P>int</P></TD><TD><P>winnings in this hand (bets, antes, etc. are NOT deducted, but rake already is)</P></TD></TR> <TR VALIGN=TOP> <TD> <P>rake</P> </TD> <TD> <P>int</P> </TD> <TD> <P>rake for this player for this hand</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>comment</P> </TD> <TD> <P>text</P> </TD> <TD> <P><BR> </P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>comment_ts</P> </TD> <TD> <P>datetime (in UTC)</P> </TD> <TD> <P><BR> </P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>tourneys_players_id</P> </TD> <TD> <P>bigint</P> </TD> <TD> <P>references tourneys_players.id</P> </TD> </TR> </TABLE> <p><BR> </P> <P><B>Table HudDataHoldemOmaha</B></P> <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0> <TR VALIGN=TOP> <TD><P><b>Field Name</b></P></TD> <TD><P><b>Type</b></P></TD> <TD><P><b>Comment</b></P></TD> </TR> <TR VALIGN=TOP> <TD><P>id</P></TD> <TD><P>bigint</P></TD> <TD><P><br></P></TD> </TR> <TR VALIGN=TOP> <TD><P>gametypeId</P></TD> <TD><P>smallint</P></TD> <TD><P>references gametypes.id</P></TD> </TR> <TR VALIGN=TOP> <TD><P>playerId</P></TD> <TD><P>int</P></TD> <TD><P>references players.id</P></TD> </TR> <TR VALIGN=TOP> <TD><P>activeSeats</P></TD> <TD><P>smallint</P></TD> <TD><P>range 2-10</P></TD> </TR> <TR VALIGN=TOP> <TD><P>HDs</P></TD> <TD><P>int</P></TD> <TD><P>number of hands this player played in this gametype with this number of seats</P></TD> </TR> <TR VALIGN=TOP> <TD><P>VPIP</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where player paid to see flop</P></TD> </TR> <TR VALIGN=TOP> <TD><P>PFR</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where player raised before flop</P></TD> </TR> <TR VALIGN=TOP> <TD><P>PF3B4BChance</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where player had chance to 3B or 4B</P></TD> </TR> <TR VALIGN=TOP> <TD><P>PF3B4B</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where player 3bet/4bet before flop</P></TD> </TR> <TR VALIGN=TOP> <TD><P>sawFlop</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where player saw flop</P></TD> </TR> <TR VALIGN=TOP> <TD><P>sawTurn</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where player saw turn</P></TD> </TR> <TR VALIGN=TOP> <TD><P>sawRiver</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where player saw river</P></TD> </TR> <TR VALIGN=TOP> <TD><P>sawShowdown</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where player saw showdown</P></TD> </TR> <TR VALIGN=TOP> <TD><P>raisedFlop</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where player raised flop</P></TD> </TR> <TR VALIGN=TOP> <TD><P>raisedTurn</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where player raised turn</P></TD> </TR> <TR VALIGN=TOP> <TD><P>raisedRiver</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where player raised river</P></TD> </TR> <TR VALIGN=TOP> <TD><P>otherRaisedFlop</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where someone else raised flop</P></TD> </TR> <TR VALIGN=TOP> <TD><P>otherRaisedFlopFold</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where someone else raised flop and the player folded</P></TD> </TR> <TR VALIGN=TOP> <TD><P>otherRaisedTurn</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where someone else raised Turn</P></TD> </TR> <TR VALIGN=TOP> <TD><P>otherRaisedTurnFold</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where someone else raised Turn and the player folded</P></TD> </TR> <TR VALIGN=TOP> <TD><P>otherRaisedRiver</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where someone else raised River</P></TD> </TR> <TR VALIGN=TOP> <TD><P>otherRaisedRiverFold</P></TD> <TD><P>int</P></TD> <TD><P>number of hands where someone else raised River and the player folded</P></TD> </TR> <TR VALIGN=TOP> <TD><P>wonWhenSeenFlop</P></TD> <TD><P>float</P></TD> <TD><P>How many hands the player won after seeing the flop - this can be a "partial win" if the pot is split.<br> To be completely clear, this stores a hand count, NOT a money amount.</P></TD> </TR> <TR VALIGN=TOP> <TD><P>wonAtSD</P></TD> <TD><P>float</P></TD> <TD><P>As wonWhenSeenFlop, but for showdown.</P></TD> </TR> <TR VALIGN=TOP> <TD><P>stealAttemptChance</P></TD> <TD><P>int</P></TD> <TD><P>Player was in CO, BTN or SB and nobody has called yet</P></TD> </TR> <TR VALIGN=TOP> <TD><P>stealAttempted</P></TD> <TD><P>int</P></TD> <TD><P>Player took a chance per the above condition</P></TD> </TR> <TR VALIGN=TOP> <TD><P>foldBbToStealChance</P></TD> <TD><P>int</P></TD> <TD><P>Somebody tried to steal BB from player</P></TD> </TR> <TR VALIGN=TOP> <TD><P>foldedBbToSteal</P></TD> <TD><P>int</P></TD> <TD><P>Player folded BB to steal attempt</P></TD> </TR> <TR VALIGN=TOP> <TD><P>foldSbToStealChance</P></TD> <TD><P>int</P></TD> <TD><P>Somebody tried to steal SB from player</P></TD> </TR> <TR VALIGN=TOP> <TD><P>foldedSbToSteal</P></TD> <TD><P>int</P></TD> <TD><P>Player folded SB to steal attempt</P></TD> </TR> </TABLE> <P></P> <P><B>Table hands_actions</B></P> <p>Did separate this into an extra table because it makes SELECTing across different streets so much easier. Also the space saving will be very large.</P> <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0> <TR VALIGN=TOP> <TD><P>Field Name</P></TD> <TD><P>Type</P></TD> <TD><P>Comment</P></TD> </TR> <TR VALIGN=TOP> <TD><P>id</P></TD> <TD><P>bigint</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>hand_player_id</P></TD> <TD><P>bigint</P></TD> <TD><P>references hands_players.id</P></TD> </TR> <TR VALIGN=TOP> <TD><P>street</P></TD> <TD><P>smallint</P></TD> <TD><p>street number, 0-3 (preflop, flop, turn, river) for holdem/omaha or 0-4 for razz/stud</P><P>-1 for seen showdown</P></TD> </TR> <TR VALIGN=TOP> <TD><P>action_no</P></TD> <TD><P>smallint</P></TD> <TD><P>action number, this is counted from zero for each street but across all players (e.g. in a heads up where the SB calls and the BB raises and the SB calls again would have numbers 0 and 1 for blinds, 2 and 4 for call and 3 for bet)<br> Note that the blinds are counted as an action, so if the SB stays in the hand it'll always be action #0</P></TD> </TR> <TR VALIGN=TOP> <TD><P>action</P></TD> <TD><P>char(5)</P></TD> <TD><P>Bet stands for bring in, complete, bet, double bet, raise and double raise, since they all - technically - do the same thing. Unbet is used for when an uncalled bet is returned.</P> <P>Other valid values: blind call check fold</P></TD> </TR> <TR VALIGN=TOP> <TD><P>amount</P></TD> <TD><P>int</P></TD> <TD><P>amount put into the middle for this action</P></TD> </TR> <TR VALIGN=TOP> <TD><P>comment</P></TD> <TD><P>text</P></TD> <TD><P><BR></P></TD> </TR> <TR VALIGN=TOP> <TD><P>comment_ts</P></TD> <TD><P>datetime (in UTC)</P></TD> <TD><P><BR></P></TD> </TR> </TABLE> <p><BR></P> <p><B>Tournament Tables</B></P> <p><BR></P> <p><B>Table tourneys</B></P> <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0> <TR VALIGN=TOP> <TD> <P>Field name</P> </TD> <TD> <P>Type</P> </TD> <TD> <P>Comment</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>id</P> </TD> <TD> <P>int</P> </TD> <TD> <P><BR> </P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>site_id</P> </TD> <TD> <P>smallint</P> </TD> <TD> <P>References sites.id</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>site_tourney_no</P> </TD> <TD> <P>bigint</P> </TD> <TD> <P><BR> </P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>buyin</P> </TD> <TD> <P>int</P> </TD> <TD> <P>Buy-in in cents. Without rebuy/add-on</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>fee</P> </TD> <TD> <P>int</P> </TD> <TD> <P><BR> </P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>knockout</P> </TD> <TD> <P>int</P> </TD> <TD> <P><BR> </P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>entries</P> </TD> <TD> <P>int</P> </TD> <TD> <P>-1 if unknown</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>prizepool</P> </TD> <TD> <P>int</P> </TD> <TD> <p>Need this as separate field to support rebuy/addon</P> <P>-1 if unknown</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>start_time</P> </TD> <TD> <P>datetime (in UTC)</P> </TD> <TD> <P>Empty if unknown</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>comment</P> </TD> <TD> <P>text</P> </TD> <TD> <P><BR> </P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>comment_ts</P> </TD> <TD> <P>datetime (in UTC)</P> </TD> <TD> <P><BR> </P> </TD> </TR> </TABLE> <p><BR> </P> <p><B>Table tourneys_players</B></P> <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0> <TR VALIGN=TOP> <TD> <P>Field Name</P> </TD> <TD> <P>Type</P> </TD> <TD> <P>Comment</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>id</P> </TD> <TD> <P>bigint</P> </TD> <TD> <P><BR> </P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>tourney_id</P> </TD> <TD> <P>int</P> </TD> <TD> <P>References tourneys.id</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>player_id</P> </TD> <TD> <P>int</P> </TD> <TD> <P>References players.id</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>payin_amount</P> </TD> <TD> <P>int</P> </TD> <TD> <P>Buyin, fee, rebuys and add-ons</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>rank</P> </TD> <TD> <P>int</P> </TD> <TD> <P>Finishing rank</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>winnings</P> </TD> <TD> <P>signed int</P> </TD> <TD> <P>Winnings (not profit) by this player, -1 if unknown.</P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>comment</P> </TD> <TD> <P>text</P> </TD> <TD> <P><BR> </P> </TD> </TR> <TR VALIGN=TOP> <TD> <P>comment_ts</P> </TD> <TD> <P>datetime (in UTC)</P> </TD> <TD> <P><BR> </P> </TD> </TR> </TABLE> </BODY> </HTML>