Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Built-in Functions Overview

Open PQL ships with a library of poker-specific functions you can use inside select and where. They group loosely into the categories below; each has its own page with descriptions and examples.

CategoryPage
EquityEquity
Hand categories, types, and ratingsHand Categories
Board textureBoard Texture
Rank utilitiesRank Utilities
OutsOuts
Outcomes & helpersOutcomes

Common shapes

Most functions take some combination of:

  • TPlayer — an identifier declared in the from clause (hero, villain, …)
  • TStreet — one of preflop, flop, turn, river
  • THandType or TFlopHandCategory — a hand-class keyword
  • TRange / TBoardRange — a single-quoted range string
  • TRankSet — typically the result of boardRanks(...) or handRanks(...)

Function names are case-insensitive. The book uses camelCase for readability, but boardSuitCount, boardsuitcount, and BOARDSUITCOUNT all parse the same.

Full function index

The 49 unique functions currently implemented (with two extra aliases) are:

FunctionArgument typesReturn type
bestHiRatingTPlayer, TStreetTBoolean
boardInRangeTBoardRangeTBoolean
boardRanksTStreetTRankSet
boardSuitCountTStreetTCardCount
duplicatedBoardRanksTStreetTRankSet
duplicatedHandRanksTPlayer, TStreetTRankSet
equity (alias of hvhEquity)TPlayer, TStreetTEquity
exactFlopHandCategoryTPlayer, TFlopHandCategoryTBoolean
exactHandTypeTPlayer, TStreet, THandTypeTBoolean
flopHandCategoryTPlayerTFlopHandCategory
flushingBoardTStreetTBoolean
fractionalRiverEquityTPlayerTFraction
handBoardIntersectionsTPlayer, TStreetTCardCount
handRanksTPlayer, TStreetTRankSet
handTypeTPlayer, TStreetTHandType
hasSecondBoardRankTPlayer, TStreetTBoolean
hasTopBoardRankTPlayer, TStreetTBoolean
hiRatingTPlayer, TStreetTHiRating
hvhEquityTPlayer, TStreetTEquity
inRangeTPlayer, TRangeTBoolean
intersectingHandRanksTPlayer, TStreetTRankSet
maxHiRatingTPlayer, TStreetTBoolean
maxRankTRankSetTRank
minEquity (alias of minHvHEquity)TPlayer, TStreet, TDoubleTBoolean
minFlopHandCategoryTPlayer, TFlopHandCategoryTBoolean
minHandTypeTPlayer, TStreet, THandTypeTBoolean
minHiRatingTPlayer, TStreet, THiRatingTBoolean
minHvHEquityTPlayer, TStreet, TDoubleTBoolean
minRankTRankSetTRank
monotoneBoardTStreetTBoolean
nonIntersectingHandRanksTPlayer, TStreetTRankSet
nthRankTInteger, TRankSetTRank
nutHiTPlayer, TStreetTBoolean
nutHiForHandTypeTPlayer, TStreetTBoolean
overpairTPlayer, TStreetTBoolean
pairedBoardTStreetTBoolean
pocketPairTPlayerTBoolean
rainbowBoardTStreetTBoolean
rankCountTRankSetTCardCount
rateHiHandTStringTHiRating
riverCardTCard
riverEquityTPlayerTEquity
scoopsTPlayerTBoolean
straightBoardTStreetTBoolean
tiesHiTPlayerTBoolean
toCardTStringTCard
toRankTStringTRank
turnCardTCard
twoToneBoardTStreetTBoolean
winningHandTypeTHandType
winsHiTPlayerTBoolean

Functions in the original PQL spec but not yet implemented

For users coming from the original Java PQL, the following functions are documented in the upstream spec but not yet available in Open PQL:

  • All Lo-hand functions: bestLoRating, boardAllowsMadeLo, boardHasOneDistinctLoCard, boardHasTwoDistinctLoCards, boardLoCardCount, loRating, madeLo, minLoRating, nutLo, nutLoOuts, rateLoHand, tiesLo, winsLo
  • Multi-opponent random-range equities: HvREquity, HvPerceivedRangeEquity, minHvREquity, minHvPerceivedRangeEquity
  • Hand-strength helpers: fiveCardHiHandNumber, handRanking, handRankingFor, cardsPlay, upCard, outsToHandType, minOutsToHandType, nutHiOuts, fourFlush, threeFlush, toString
  • The higher-order handsHaving selector

Where the implementations live

The function implementations live under openpql-runner/src/functions/. If the book lags behind, the source is the source of truth.