MySQL 9.5 Reference Manual Including MySQL NDB Cluster 9.5

15.1.19 CREATE LIBRARY Statement

CREATE LIBRARY [IF NOT EXISTS] [database.]library
    LANGUAGE language
    [COMMENT "comment_text"]
    AS code

This statement creates a library in the named database, if any. If no database is specified, the library is created in the current database. The library name may be any valid SQL identifier. LANGUAGE must be JavaScript or Wasm (case-insensitive).

COMMENT is optional. The text of the comment must be quoted.

code is a string consisting of JavaScript code, or Base64 or hexadecimal encoding of the compiled WebAssembly code, which is checked for validity at creation time. Invalid code causes the statement to be rejected with an error. The code string can be dollar-quoted or single-quoted; it can also be double-quoted as long as ANSI_QUOTES SQL mode is not set.

To execute CREATE LIBRARY, the user must have the CREATE ROUTINE privilege.

To use a library created within a stored program using this statement, the user must have the EXECUTE privilege. This is checked whenever a function or procedure using the library is created.

In the following example, the first statement creates a JavaScript library named lib1 in the jslib database. The SELECT statement that follows it displays the row in the Information Schema LIBRARIES table corresponding to the library just created.

mysql> CREATE LIBRARY IF NOT EXISTS jslib.lib1 LANGUAGE JAVASCRIPT
    ->     AS $$
    $>       export function f(n) {
    $>         return n
    $>       }
    $>     $$;
Query OK, 0 rows affected (0.02 sec)

mysql> SELECT * FROM information_schema.LIBRARIES
    -> WHERE LIBRARY_SCHEMA='jslib'\G
*************************** 1. row ***************************
   LIBRARY_CATALOG: def
    LIBRARY_SCHEMA: jslib
      LIBRARY_NAME: lib1
LIBRARY_DEFINITION: 
      export function f(n) {
        return n
      }
    
          LANGUAGE: JAVASCRIPT
           CREATED: 2024-12-16 16:36:44
      LAST_ALTERED: 2024-12-16 16:36:44
          SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,
NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
           CREATOR: me@localhost
1 row in set (0.00 sec)

In the following example, the first statement creates a WebAssembly library named lib1 in the wasmlib database. This example uses the Base64 encoding of the compiled WebAssembly code. The SELECT statement that follows it displays the row in the Information Schema LIBRARIES table corresponding to the library just created.

mysql> CREATE LIBRARY IF NOT EXISTS wasmlib.lib1 LANGUAGE WASM 
AS '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';
mysql> SELECT * FROM information_schema.LIBRARIES
    -> WHERE LIBRARY_SCHEMA='wasmlib'\G
 *************************** 1. row ***************************
   LIBRARY_CATALOG: def
    LIBRARY_SCHEMA: wasmlib
      LIBRARY_NAME: lib1
LIBRARY_DEFINITION: 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
          LANGUAGE: WASM
           CREATED: 2025-10-22 15:42:12
      LAST_ALTERED: 2025-10-22 15:42:12
          SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,
NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
   LIBRARY_COMMENT: 
           CREATOR: me@localhost

In the following example, the first statement creates a WebAssembly library named lib2 in the wasmlib database. This example uses the hexadecimal encoding of the compiled WebAssembly code. The SELECT statement that follows it displays the row in the Information Schema LIBRARIES table corresponding to the library just created.

mysql> CREATE LIBRARY IF NOT EXISTS wasmlib.lib2 LANGUAGE WASM 
AS X'0061736d0100000001270760037f7f7f017f60000060017f017f60017f0060037f7e7f017e6000017f60047f7f7f7f017f02460216776173695f736e617073686f745f70726576696577310970726f635f65786974000316776173695f736e617073686f745f70726576696577310866645f77726974650006030f0e01010103050201000204020302050405017001050505060101820282020608017f0141d091040b07940107066d656d6f727902000d7072696e745f6d6573736167650003195f5f696e6469726563745f66756e6374696f6e5f7461626c650100065f73746172740004195f656d736372697074656e5f737461636b5f726573746f7265000d175f656d736372697074656e5f737461636b5f616c6c6f63000e1c656d736372697074656e5f737461636b5f6765745f63757272656e74000f090a010041010b04020a090b0c01070af70c0e0300010b040010080b3e01017f100841b80928020022000440034020001005200028023822000d000b0b41bc09280200100541a009280200100541bc09280200100541001000000b5301027f02402000450d00200028024c1a2000280214200028021c47044020004100410020002802241100001a0b2000280204220120002802082202460d002000200120026bac410120002802281104001a0b0b6301017f41d80841d808280200220041016b200072360200419008280200220041087104404190082000412072360200417f0f0b419408420037020041ac0841bc08280200220036020041a408200036020041a008200041c0082802006a36020041000ba60501067f024041a0082802002202047f20020510060d0141a0082802000b41a40828020022016b2000490440419008418008200041b4082802001100000f0b0240024020004541e008280200410048720d0020002103034020034180086a220241016b2d0000410a470440200341016b22030d010c020b0b419008418008200341b40828020011000022012003490d02200020036b210041a40828020021010c010b4180082102410021030b024020004180044f044020000440200120022000fc0a00000b0c010b200020016a2104024020012002734103714504400240200141037145200045720d000340200120022d00003a0000200241016a2102200141016a2201410371450d0120012004490d000b0b2004417c7121050240200441c000490d002001200541406a22064b0d0003402001200228020036020020012002280204360204200120022802083602082001200228020c36020c2001200228021036021020012002280214360214200120022802183602182001200228021c36021c2001200228022036022020012002280224360224200120022802283602282001200228022c36022c2001200228023036023020012002280234360234200120022802383602382001200228023c36023c200241406b2102200141406b220120064d0d000b0b200120054f0d01034020012002280200360200200241046a2102200141046a22012005490d000b0c010b20044104492000410449720d00200441046b21060340200120022d00003a0000200120022d00013a0001200120022d00023a0002200120022d00033a0003200241046a2102200141046a220120064d0d000b0b200120044904400340200120022d00003a0000200241016a2102200141016a22012004470d000b0b0b41a40841a40828020020006a360200200020036a21010b20010bb50201037f41dc082802001a418008210103402001220041046a21014180828408200028020022026b20027241808182847871418081828478460d000b03402000220141016a210020012d00000d000b0240027f20014180086b2200027f41dc082802004100480440200010070c010b200010070b22012000460d001a20010b2000470d00024041e008280200410a460d0041a408280200220041a008280200460d0041a408200041016a3602002000410a3a00000c010b230041106b220024002000410a3a000f0240024041a0082802002201047f20010510060d0241a0082802000b41a4082802002201460d0041e008280200410a460d0041a408200141016a3602002001410a3a00000c010b4190082000410f6a410141b4082802001100004101470d0020002d000f1a0b200041106a24000b0bd80201077f230041206b220324002003200028021c2204360210200028021421052003200236021c200320013602182003200520046b2201360214200120026a2105200341106a210141022107027f024002400240200028023c200141022003410c6a1001100c0440200121040c010b03402005200328020c2206460d0220064100480440200121040c040b2001410841002006200128020422084b22091b6a220420062008410020091b6b220820042802006a3602002001410c410420091b6a2201200128020020086b360200200520066b2105200028023c20042201200720096b22072003410c6a1001100c450d000b0b2005417f470d010b2000200028022c220136021c200020013602142000200120002802306a36021020020c010b2000410036021c2000420037031020002000280200412072360200410020074102460d001a200220042802046b0b2101200341206a240020010b040041000b040042000b1500200045044041000f0b41b0092000360200417f0b0600200024000b1000230020006b4170712200240020000b040023000b0b4f07004180080b0c54686973206973205741534d004190080b010500419c080b01020041b4080b0e0300000004000000c804000000040041cc080b01010041dc080b05ffffffff0a0041a0090b021004';
mysql> SELECT * FROM information_schema.LIBRARIES
    -> WHERE LIBRARY_SCHEMA='wasmlib' AND LIBRARY_NAME='lib2'\G
*************************** 1. row ***************************
   LIBRARY_CATALOG: def
    LIBRARY_SCHEMA: wasmlib
      LIBRARY_NAME: lib2
LIBRARY_DEFINITION: 
          LANGUAGE: WASM
           CREATED: 2025-10-23 11:07:18
      LAST_ALTERED: 2025-10-23 11:07:18
          SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,
NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
   LIBRARY_COMMENT: 
           CREATOR: me@localhost
2 rows in set (0.000 sec)

See Section 27.3.8, “Using JavaScript Libraries”, as well as Section 27.3.9, “Using WebAssembly Libraries”, for more information and examples.