h2-functions-4-mysql
h2-functions-4-mysql copied to clipboard
H2 functions for MySQL
h2-functions-4-mysql
H2 User defined functions for MySQL.
Why this project?
I always use H2 for unit test instead of real MySQL(Docker), but some MySQL functions are not available in H2. So I create this project to define some functions for MySQL and make unit test easy.
How to use?
In you pom.xml add following dependency:
For H2 1.4.x, please use 1.0.0 version as following:
<dependency>
<groupId>org.mvnsearch</groupId>
<artifactId>h2-functions-4-mysql</artifactId>
<version>1.0.0</version>
</dependency>
For H2 2.0.x, please use 2.0.0 version as following:
<dependency>
<groupId>org.mvnsearch</groupId>
<artifactId>h2-functions-4-mysql</artifactId>
<version>2.0.0</version>
</dependency>
- Flyway with Spring Boot: automatically(classpath:db/migration/h2/V0_functions.sql), no configuration.
- Manual: Add following code in your application. datasource is h2 datasource.
H2FunctionsLoader.loadMysqlFunctions(dataSource);
Function List
N: not available, Y: same, A: available
MySQL | H2 | Status |
---|---|---|
ABS | ABS | Y |
ACOS | ACOS | Y |
ADDDATE | A | |
ADDTIME | A | |
AES_DECRYPT | A | |
AES_ENCRYPT | A | |
ANY_VALUE | ||
ASCII | ASCII | Y |
ASIN | ASIN | Y |
ATAN | ATAN | Y |
ATAN2 | ATAN2 | Y |
AVG | AVG | Y |
BENCHMARK | ||
BIN | A | |
BIN_TO_UUID | ||
BIT_AND | BIT_AND | Y |
BIT_COUNT | N | |
BIT_LENGTH | BIT_LENGTH | Y |
BIT_OR | BIT_OR | Y |
BIT_XOR | ||
CAST | CAST | Y |
CEIL | CEIL | Y |
CEILING | CEILING | Y |
CHAR | CHAR | Y |
CHAR_LENGTH | CHAR_LENGTH | Y |
CHARACTER_LENGTH | CHARACTER_LENGTH | Y |
CHARSET | A | |
COALESCE | COALESCE | Y |
COERCIBILITY | ||
COLLATION | ||
COMPRESS | COMPRESS | Y |
CONCAT | CONCAT | Y |
CONCAT_WS | CONCAT_WS | Y |
CONNECTION_ID | A | |
CONV | A | |
CONVERT | CONVERT | Y |
CONVERT_TZ | A | |
COS | COS | Y |
COT | COT | Y |
COUNT | COUNT | Y |
COUNT | COUNT | Y |
CRC32 | A | |
CREATE_DH_PARAMETERS | ||
CREATE_DIGEST | A | |
CUME_DIST | ||
CURDATE | CURDATE | Y |
CURRENT_DATE | CURRENT_DATE | Y |
CURRENT_ROLE | A | |
CURRENT_TIME | CURRENT_TIME | Y |
CURRENT_TIMESTAMP | CURRENT_TIMESTAMP | Y |
CURRENT_USER | A | |
CURTIME | CURTIME | Y |
DATABASE | DATABASE | Y |
DATE | A | |
DATE_ADD | A | |
DATE_FORMAT | A | |
DATE_SUB | A | |
DATEDIFF | DATEDIFF | Y |
DAY | DAY | Y |
DAYNAME | DAYNAME | Y |
DAYOFMONTH | DAYOFMONTH | Y |
DAYOFWEEK | DAYOFWEEK | Y |
DAYOFYEAR | DAYOFYEAR | Y |
DECODE | DECODE | Y |
DEFAULT | ||
DEGREES | DEGREES | Y |
DENSE_RANK | ||
DES_DECRYPT | Deprecated | |
DES_ENCRYPT | Deprecated | |
ELT | ||
ENCODE | Deprecated | |
ENCRYPT | ENCRYPT | Y |
EXP | EXP | Y |
EXPORT_SET | ||
EXTRACT | EXTRACT | Y |
ExtractValue | ||
FIELD | A | |
FIND_IN_SET | A | |
FIRST_VALUE | ||
FLOOR | FLOOR | Y |
FORMAT | A | |
FOUND_ROWS | ||
FROM_BASE64 | A | |
FROM_DAYS | A | |
FROM_UNIXTIME | A | |
GeomCollection | ||
GeometryCollection | ||
GET_DD_COLUMN_PRIVILEGES | ||
GET_DD_CREATE_OPTIONS | ||
GET_DD_INDEX_SUB_PART_LENGTH | ||
GET_FORMAT | ||
GET_LOCK | ||
GREATEST | GREATEST | Y |
GROUP_CONCAT | GROUP_CONCAT | Y |
GTID_SUBSET | ||
GTID_SUBTRACT | ||
HEX | A | |
HOUR | HOUR | Y |
ICU_VERSION | ||
IF | N | |
IFNULL | IFNULL | Y |
INET_ATON | ||
INET_NTOA | ||
INET6_ATON | ||
INET6_NTOA | ||
INSERT | INSERT | Y |
INSTR | INSTR | Y |
INTERVAL | ||
IS_FREE_LOCK | ||
IS_IPV4 | A | |
IS_IPV4_COMPAT | ||
IS_IPV4_MAPPED | ||
IS_IPV6 | A | |
IS_USED_LOCK | ||
IS_UUID | A | |
ISNULL | ||
LAG | ||
LAST_INSERT_ID | LAST_INSERT_ID | Y |
LAST_VALUE | ||
LCASE | LCASE | Y |
LEAD | N | |
LEAST | LEAST | Y |
LEFT | LEFT | Y |
LENGTH | LENGTH | Y |
LineString | ||
LN | LN | Y |
LOAD_FILE | ||
LOCALTIME | A | |
LOCALTIMESTAMP | A | |
LOCATE | LOCATE | Y |
LOG | LOG | Y |
LOG10 | LOG10 | Y |
LOG2 | N | |
LOWER | LOWER | Y |
LPAD | LPAD | Y |
LTRIM | LTRIM | Y |
MAKE_SET | ||
MAKEDATE | A | |
MAKETIME | Y | |
MASTER_POS_WAIT | N | |
MAX | MAX | Y |
MBRContains | N | |
MBRCoveredBy | N | |
MBRCovers | N | |
MBRDisjoint | N | |
MBREquals | N | |
MBRIntersects | N | |
MBROverlaps | N | |
MBRTouches | N | |
MBRWithin | N | |
MD5 | A | |
MICROSECOND | A | |
MID | A | |
MIN | MIN | Y |
MINUTE | MINUTE | Y |
MOD | MOD | Y |
MONTH | MONTH | Y |
MONTHNAME | MONTHNAME | Y |
MultiLineString | N | |
MultiPoint | ||
MultiPolygon | ||
NAME_CONST | ||
NOW | A | |
NTH_VALUE | ||
NTILE | ||
NULLIF | NULLIF | Y |
OCT | ||
OCTET_LENGTH | OCTET_LENGTH | Y |
ORD | A | |
PASSWORD | A | |
PERCENT_RANK | N | |
PERIOD_ADD | A | |
PERIOD_DIFF | A | |
PI | PI | Y |
Point | ||
Polygon | ||
POSITION | POSITION | Y |
POW | A | |
POWER | POWER | Y |
QUARTER | QUARTER | Y |
QUOTE | A | |
RADIANS | RADIANS | Y |
RAND | RAND | Y |
RANDOM_BYTES | A | |
RANK | ||
REGEXP_INSTR | ||
REGEXP_LIKE | REGEXP_LIKE | Y |
REGEXP_REPLACE | REGEXP_REPLACE | Y |
REGEXP_SUBSTR | ||
RELEASE_ALL_LOCKS | ||
RELEASE_LOCK | ||
REPEAT | REPEAT | Y |
REPLACE | REPLACE | Y |
REVERSE | A | |
RIGHT | RIGHT | Y |
ROLES_GRAPHML | ||
ROUND | ROUND | Y |
ROW_COUNT | ||
ROW_NUMBER | ||
RPAD | RPAD | Y |
RTRIM | RTRIM | Y |
SCHEMA | SCHEMA | Y |
SEC_TO_TIME | A | |
SECOND | SECOND | Y |
SESSION_USER | A | |
SHA1 | A | |
SHA2 | A | |
SIGN | SIGN | Y |
SIN | SIN | Y |
SLEEP | A | |
SOUNDEX | SOUNDEX | Y |
SPACE | SPACE | Y |
SQRT | SQRT | Y |
STATEMENT_DIGEST | ||
STATEMENT_DIGEST_TEXT | ||
STD | ||
STDDEV | ||
STDDEV_POP | STDDEV_POP | Y |
STDDEV_SAMP | STDDEV_SAMP | Y |
STR_TO_DATE | A | |
STRCMP | A | |
SUBDATE | A | |
SUBSTR | SUBSTR | Y |
SUBSTRING | SUBSTRING | Y |
SUBSTRING_INDEX | A | |
SUBTIME | A | |
SUM | SUM | Y |
SYSDATE | SYSDATE | Y |
SYSTEM_USER | A | |
TAN | TAN | Y |
TIME | A | |
TIME_FORMAT | A | |
TIME_TO_SEC | A | |
TIMEDIFF | A | |
TIMESTAMP | A | |
TIMESTAMPADD | ||
TIMESTAMPDIFF | ||
TO_BASE64 | A | |
TO_DAYS | A | |
TO_SECONDS | A | |
TRIM | TRIM | Y |
TRUNCATE | TRUNCATE | Y |
UCASE | A | |
UNCOMPRESS | ||
UNCOMPRESSED_LENGTH | ||
UNHEX | A | |
UNIX_TIMESTAMP | A | |
UpdateXML | ||
UPPER | UPPER | Y |
USER | USER | Y |
UTC_DATE | A | |
UTC_TIME | A | |
UTC_TIMESTAMP | A | |
UUID | UUID | A |
UUID_SHORT | A | |
UUID_TO_BIN | ||
VALIDATE_PASSWORD_STRENGTH | ||
VALUES | ||
VAR_POP | VAR_POP | Y |
VAR_SAMP | VAR_SAMP | Y |
VARIANCE | ||
VERSION | A | |
WAIT_FOR_EXECUTED_GTID_SET | ||
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS | ||
WEEK | WEEK | Y |
WEEKDAY | A | |
WEEKOFYEAR | A | |
WEIGHT_STRING | ||
YEAR | YEAR | Y |
YEARWEEK | A |
References
- H2 functions: http://www.h2database.com/html/functions.html
- MySQL functions: https://dev.mysql.com/doc/refman/8.0/en/func-op-summary-ref.html
- application-test.properties with H2 MySQL Mode support
### datasource
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:public;MODE=MYSQL;DATABASE_TO_UPPER=false;INIT=CREATE SCHEMA IF NOT EXISTS public
spring.datasource.username=sa