diff options
Diffstat (limited to 'FUNCTIONS.md')
-rw-r--r-- | FUNCTIONS.md | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/FUNCTIONS.md b/FUNCTIONS.md new file mode 100644 index 0000000..fbf378f --- /dev/null +++ b/FUNCTIONS.md @@ -0,0 +1,100 @@ +# PacketQ SQL functions + +## Grouping functions + +Grouping function either groups the whole result or the result specified +by `group by`. + +### COUNT(wildcard) + +Counts occurrences within a group. + +### AVG(num) + +Calculates the average of all `num` within a group. + +### SUM(num) + +Calculates the sum of all `num` within a group. + +### MIN(num) + +Calculates the minimum of all `num` within a group. + +### MAX(num) + +Calculates the maximum of all `num` within a group. + +### STDEV(num) + +Calculates the standard deviation of all `num` within a group. + +## Integer functions + +### TRUNCATE(num) + +Converts double precision number to integer. + +## Logical functions + +### IF(condition, true_op, false_op) + +Evaluates `condition` and executes `false_op` if the result is 0 (false) +otherwise `true_op` is executed. + +### NETMASK(address [, v4_mask_length [, v6_mask_length]]) + +Masks the specified address using the v4 and v6 mask lengths specified +in number of bits. + +Defaults to 24 for IPv4 and 48 for IPv6 (/24 and /48 respectively) + +### CC(address) + +Returns the 2-letter ISO country code associated with the address from +a MaxMind database (see MaxMind Database below on selecting database). + +Returns an empty string on lookup failures or if this feature was not +built in. + +### ASN(address) + +Returns the autonomous system number associated with the address from +a MaxMind database (see MaxMind Database below on selecting database). + +Returns -1 on lookup failures or if this feature was not built in. + +## String operations + +### RSPLIT(string, n [, char]) + +Splits a string on character `char` (default `.`) and selects the N'th split +from the right, i.e: `RSPLIT('192.168.0.1',2)` returns 168. + +### NAME(table, num) + +Translate numbers into names table can be `rcode` or `qtype`, i.e: +`name('rcode',rcode)` returns `NXDomain`. + +### TRIM(string, trim) + +Trims of any occurrences of the string `trim` from both end of the string, +i.e: `trim('se.domains.se', 'se')` returns `.domains.`. + +### LOWER(string) + +Turns `string` into lowercase. + +# MaxMind Database + +PacketQ will try to open MaxMind databases that resides in common path on +major distributions, but you can also specify paths and database files +using environment variables. + +`PACKETQ_MAXMIND_PATH` sets the path to look for the databases in addition +to the common paths, it will try `GeoLite2-Country.mmdb` for `CC()` and +`GeoLite2-ASN.mmdb` for `ASN()`. + +You can also specify the full path to the database file you wish to use +for each function with `PACKETQ_MAXMIND_CC_DB` and `PACKETQ_MAXMIND_ASN_DB`, +these settings will override path settings. |