INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (316,17,'MIN','Syntax:\nMIN([DISTINCT] expr) [over_clause]\n\nReturns the minimum value of expr. MIN() may take a string argument; in\nsuch cases, it returns the minimum string value. See\nhttp://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html. The DISTINCT\nkeyword can be used to find the minimum of the distinct values of expr,\nhowever, this produces the same result as omitting DISTINCT.\n\nIf there are no matching rows, MIN() returns NULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html; it\ncannot be used with DISTINCT.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html\n\n','mysql> SELECT student_name, MIN(test_score), MAX(test_score)\n       FROM student\n       GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (317,29,'REPLACE','Syntax:\nREPLACE [LOW_PRIORITY | DELAYED]\n    [INTO] tbl_name\n    [PARTITION (partition_name [, partition_name] ...)]\n    [(col_name [, col_name] ...)]\n    {VALUES | VALUE} (value_list) [, (value_list)] ...\n\nREPLACE [LOW_PRIORITY | DELAYED]\n    [INTO] tbl_name\n    [PARTITION (partition_name [, partition_name] ...)]\n    SET assignment_list\n\nREPLACE [LOW_PRIORITY | DELAYED]\n    [INTO] tbl_name\n    [PARTITION (partition_name [, partition_name] ...)]\n    [(col_name [, col_name] ...)]\n    SELECT ...\n\nvalue:\n    {expr | DEFAULT}\n\nvalue_list:\n    value [, value] ...\n\nassignment:\n    col_name = value\n\nassignment_list:\n    assignment [, assignment] ...\n\nREPLACE works exactly like INSERT, except that if an old row in the\ntable has the same value as a new row for a PRIMARY KEY or a UNIQUE\nindex, the old row is deleted before the new row is inserted. See [HELP\nINSERT].\n\nREPLACE is a MySQL extension to the SQL standard. It either inserts, or\ndeletes and inserts. For another MySQL extension to standard SQL---that\neither inserts or updates---see\nhttp://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html.\n\nDELAYED inserts and replaces were deprecated in MySQL 5.6. In MySQL\n8.0, DELAYED is not supported. The server recognizes but ignores the\nDELAYED keyword, handles the replace as a nondelayed replace, and\ngenerates an ER_WARN_LEGACY_SYNTAX_CONVERTED warning. ("REPLACE DELAYED\nis no longer supported. The statement was converted to REPLACE.") The\nDELAYED keyword will be removed in a future release.\n\n*Note*:\n\nREPLACE makes sense only if a table has a PRIMARY KEY or UNIQUE index.\nOtherwise, it becomes equivalent to INSERT, because there is no index\nto be used to determine whether a new row duplicates another.\n\nValues for all columns are taken from the values specified in the\nREPLACE statement. Any missing columns are set to their default values,\njust as happens for INSERT. You cannot refer to values from the current\nrow and use them in the new row. If you use an assignment such as SET\ncol_name = col_name + 1, the reference to the column name on the right\nhand side is treated as DEFAULT(col_name), so the assignment is\nequivalent to SET col_name = DEFAULT(col_name) + 1.\n\nTo use REPLACE, you must have both the INSERT and DELETE privileges for\nthe table.\n\nIf a generated column is replaced explicitly, the only permitted value\nis DEFAULT. For information about generated columns, see\nhttp://dev.mysql.com/doc/refman/8.0/en/create-table-generated-columns.h\ntml.\n\nREPLACE supports explicit partition selection using the PARTITION\nkeyword with a list of comma-separated names of partitions,\nsubpartitions, or both. As with INSERT, if it is not possible to insert\nthe new row into any of these partitions or subpartitions, the REPLACE\nstatement fails with the error Found a row not matching the given\npartition set. For more information and examples, see\nhttp://dev.mysql.com/doc/refman/8.0/en/partitioning-selection.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/replace.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/replace.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (318,33,'CURRENT_TIMESTAMP','Syntax:\nCURRENT_TIMESTAMP, CURRENT_TIMESTAMP([fsp])\n\nCURRENT_TIMESTAMP and CURRENT_TIMESTAMP() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (319,27,'ST_SYMDIFFERENCE','ST_SymDifference(g1, g2)\n\nReturns a geometry that represents the point set symmetric difference\nof the geometry values g1 and g2, which is defined as:\n\ng1 symdifference g2 := (g1 union g2) difference (g1 intersection g2)\n\nOr, in function call notation:\n\nST_SymDifference(g1, g2) = ST_Difference(ST_Union(g1, g2), ST_Intersection(g1, g2))\n\nST_SymDifference() handles its arguments as described in the\nintroduction to this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','mysql> SET @g1 = Point(1,1), @g2 = Point(2,2);\nmysql> SELECT ST_AsText(ST_SymDifference(@g1, @g2));\n+---------------------------------------+\n| ST_AsText(ST_SymDifference(@g1, @g2)) |\n+---------------------------------------+\n| MULTIPOINT((1 1),(2 2))               |\n+---------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (320,15,'INTERNAL_UPDATE_TIME','INTERNAL_UPDATE_TIME(ARGS)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (321,8,'GTID_SUBSET','Syntax:\nGTID_SUBSET(subset,set)\n\nGiven two sets of global transaction IDs subset and set, returns true\nif all GTIDs in subset are also in set. Returns false otherwise.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gtid-functions.html\n\n','mysql> SELECT GTID_SUBSET(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:23\',\n    ->     \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\')\\G\n*************************** 1. row ***************************\nGTID_SUBSET(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:23\',\n    \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\'): 1\n1 row in set (0.00 sec)\n\nmysql> SELECT GTID_SUBSET(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:23-25\',\n    ->     \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\')\\G\n*************************** 1. row ***************************\nGTID_SUBSET(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:23-25\',\n    \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\'): 1\n1 row in set (0.00 sec)\n\nmysql> SELECT GTID_SUBSET(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25\',\n    ->     \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\')\\G\n*************************** 1. row ***************************\nGTID_SUBSET(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25\',\n    \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\'): 0\n1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/8.0/en/gtid-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (322,17,'VAR_SAMP','Syntax:\nVAR_SAMP(expr) [over_clause]\n\nReturns the sample variance of expr. That is, the denominator is the\nnumber of rows minus one.\n\nIf there are no matching rows, VAR_SAMP() returns NULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (323,24,'DATETIME','DATETIME[(fsp)]\n\nA date and time combination. The supported range is \'1000-01-01\n00:00:00.000000\' to \'9999-12-31 23:59:59.999999\'. MySQL displays\nDATETIME values in \'YYYY-MM-DD HH:MM:SS[.fraction]\' format, but permits\nassignment of values to DATETIME columns using either strings or\nnumbers.\n\nAn optional fsp value in the range from 0 to 6 may be given to specify\nfractional seconds precision. A value of 0 signifies that there is no\nfractional part. If omitted, the default precision is 0.\n\nAutomatic initialization and updating to the current date and time for\nDATETIME columns can be specified using DEFAULT and ON UPDATE column\ndefinition clauses, as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/timestamp-initialization.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (324,9,'CHANGE REPLICATION FILTER','Syntax:\nCHANGE REPLICATION FILTER filter[, filter]\n	[, ...] [FOR CHANNEL channel]\n\nfilter:\n    REPLICATE_DO_DB = (db_list)\n  | REPLICATE_IGNORE_DB = (db_list)\n  | REPLICATE_DO_TABLE = (tbl_list)\n  | REPLICATE_IGNORE_TABLE = (tbl_list)\n  | REPLICATE_WILD_DO_TABLE = (wild_tbl_list)\n  | REPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list)\n  | REPLICATE_REWRITE_DB = (db_pair_list)\n\ndb_list:\n    db_name[, db_name][, ...]\n\ntbl_list:\n    db_name.table_name[, db_name.table_name][, ...]\nwild_tbl_list:\n    \'db_pattern.table_pattern\'[, \'db_pattern.table_pattern\'][, ...]\n\ndb_pair_list:\n    (db_pair)[, (db_pair)][, ...]\n\ndb_pair:\n    from_db, to_db\n\nCHANGE REPLICATION FILTER sets one or more replication filtering rules\non the slave in the same way as starting the slave mysqld with\nreplication filtering options such as --replicate-do-db or\n--replicate-wild-ignore-table. Unlike the case with the server options,\nthis statement does not require restarting the server to take effect,\nonly that the slave SQL thread be stopped using STOP SLAVE SQL_THREAD\nfirst (and restarted with START SLAVE SQL_THREAD afterwards). CHANGE\nREPLICATION FILTER requires the REPLICATION_SLAVE_ADMIN or SUPER\nprivilege. Use the FOR CHANNEL channel clause to make a replication\nfilter specific to a replication channel, for example on a multi-source\nreplication slave. Filters applied without a specific FOR CHANNEL\nclause are considered global filters, meaning that they are applied to\nall replication channels.\n\nThe following list shows the CHANGE REPLICATION FILTER options and how\nthey relate to --replicate-* server options:\n\no REPLICATE_DO_DB: Include updates based on database name. Equivalent\n  to --replicate-do-db.\n\no REPLICATE_IGNORE_DB: Exclude updates based on database name.\n  Equivalent to --replicate-ignore-db.\n\no REPLICATE_DO_TABLE: Include updates based on table name. Equivalent\n  to --replicate-do-table.\n\no REPLICATE_IGNORE_TABLE: Exclude updates based on table name.\n  Equivalent to --replicate-ignore-table.\n\no REPLICATE_WILD_DO_TABLE: Include updates based on wildcard pattern\n  matching table name. Equivalent to --replicate-wild-do-table.\n\no REPLICATE_WILD_IGNORE_TABLE: Exclude updates based on wildcard\n  pattern matching table name. Equivalent to\n  --replicate-wild-ignore-table.\n\no REPLICATE_REWRITE_DB: Perform updates on slave after substituting new\n  name on slave for specified database on master. Equivalent to\n  --replicate-rewrite-db.\n\nThe precise effects of REPLICATE_DO_DB and REPLICATE_IGNORE_DB filters\nare dependent on whether statement-based or row-based replication is in\neffect. See\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-rules.html, for more\ninformation.\n\nMultiple replication filtering rules can be created in a single CHANGE\nREPLICATION FILTER statement by separating the rules with commas, as\nshown here:\n\nCHANGE REPLICATION FILTER\n    REPLICATE_DO_DB = (d1), REPLICATE_IGNORE_DB = (d2);\n\nIssuing the statement just shown is equivalent to starting the slave\nmysqld with the options --replicate-do-db=d1 --replicate-ignore-db=d2.\n\nOn a multi-source replication slave, which uses multiple replication\nchannels to process transaction from different sources, use the FOR\nCHANNEL channel clause to set a replication filter on a replication\nchannel:\n\nCHANGE REPLICATION FILTER REPLICATE_DO_DB = (d1) FOR CHANNEL channel_1;\n\nThis enables you to create a channel specific replication filter to\nfilter out selected data from a source. When a FOR CHANNEL clause is\nprovided, the replication filter statement acts on that slave\nreplication channel removing any existing replication filter which has\nthe same filter type as the specified replication filters, and\nreplacing them with the specified filter. Filter types not explicitly\nlisted in the statement are not modified. If issued against a slave\nreplication channel which is not configured, the statement fails with\nan ER_SLAVE_CONFIGURATION error. If issued against Group Replication\nchannels, the statement fails with an\nER_SLAVE_CHANNEL_OPERATION_NOT_ALLOWED error.\n\nOn a replication slave with multiple replication channels configured,\nissuing CHANGE REPLICATION FILTER with no FOR CHANNEL clause configures\nthe replication filter for every configured slave replication channel,\nand for the global replication filters. For every filter type, if the\nfilter type is listed in the statement, then any existing filter rules\nof that type are replaced by the filter rules specified in the most\nrecently issued statement, otherwise the old value of the filter type\nis retained. For more information see\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-rules-channel-based-\nfilters.html.\n\nIf the same filtering rule is specified multiple times, only the last\nsuch rule is actually used. For example, the two statements shown here\nhave exactly the same effect, because the first REPLICATE_DO_DB rule in\nthe first statement is ignored:\n\nCHANGE REPLICATION FILTER\n    REPLICATE_DO_DB = (db1, db2), REPLICATE_DO_DB = (db3, db4);\n\nCHANGE REPLICATION FILTER\n    REPLICATE_DO_DB = (db3, db4);\n\n*Caution*:\n\nThis behavior differs from that of the --replicate-* filter options\nwhere specifying the same option multiple times causes the creation of\nmultiple filter rules.\n\nNames of tables and database not containing any special characters need\nnot be quoted. Values used with REPLICATION_WILD_TABLE and\nREPLICATION_WILD_IGNORE_TABLE are string expressions, possibly\ncontaining (special) wildcard characters, and so must be quoted. This\nis shown in the following example statements:\n\nCHANGE REPLICATION FILTER\n    REPLICATE_WILD_DO_TABLE = (\'db1.old%\');\n\nCHANGE REPLICATION FILTER\n    REPLICATE_WILD_IGNORE_TABLE = (\'db1.new%\', \'db2.new%\');\n\nValues used with REPLICATE_REWRITE_DB represent pairs of database\nnames; each such value must be enclosed in parentheses. The following\nstatement rewrites statements occurring on database db1 on the master\nto database db2 on the slave:\n\nCHANGE REPLICATION FILTER REPLICATE_REWRITE_DB = ((db1, db2));\n\nThe statement just shown contains two sets of parentheses, one\nenclosing the pair of database names, and the other enclosing the\nentire list. This is perhaps more easily seen in the following example,\nwhich creates two rewrite-db rules, one rewriting database dbA to dbB,\nand one rewriting database dbC to dbD:\n\nCHANGE REPLICATION FILTER\n  REPLICATE_REWRITE_DB = ((dbA, dbB), (dbC, dbD));\n\nThe CHANGE REPLICATION FILTER statement replaces replication filtering\nrules only for the filter types and replication channels affected by\nthe statement, and leaves other rules and channels unchanged. If you\nwant to unset all filters of a given type, set the filter\'s value to an\nexplicitly empty list, as shown in this example, which removes all\nexisting REPLICATE_DO_DB and REPLICATE_IGNORE_DB rules:\n\nCHANGE REPLICATION FILTER\n    REPLICATE_DO_DB = (), REPLICATE_IGNORE_DB = ();\n\nSetting a filter to empty in this way removes all existing rules, does\nnot create any new ones, and does not restore any rules set at mysqld\nstartup using --replicate-* options on the command line or in the\nconfiguration file.\n\nThe RESET SLAVE ALL statement removes channel specific replication\nfilters that were set on channels deleted by the statement. When the\ndeleted channel or channels are recreated, any global replication\nfilters specified for the slave are copied to them, and no channel\nspecific replication filters are applied.\n\nFor more information, see\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-rules.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/change-replication-filter.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/change-replication-filter.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (325,17,'DENSE_RANK','DENSE_RANK() over_clause\n\nReturns the rank of the current row within its partition, without gaps.\nPeers are considered ties and receive the same rank. This function\nassigns consecutive ranks to peer groups; the result is that groups of\nsize greater than one do not produce noncontiguous rank numbers. For an\nexample, see the RANK() function description.\n\nThis function should be used with ORDER BY to sort partition rows into\nthe desired order. Without ORDER BY, all rows are peers.\n\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (326,24,'INTEGER','INTEGER[(M)] [UNSIGNED] [ZEROFILL]\n\nThis type is a synonym for INT.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (327,28,'SHOW COLUMNS','Syntax:\nSHOW [EXTENDED] [FULL] {COLUMNS | FIELDS}\n    {FROM | IN} tbl_name\n    [{FROM | IN} db_name]\n    [LIKE \'pattern\' | WHERE expr]\n\nSHOW COLUMNS displays information about the columns in a given table.\nIt also works for views. SHOW COLUMNS displays information only for\nthose columns for which you have some privilege.\n\nYou can use db_name.tbl_name as an alternative to the tbl_name FROM\ndb_name syntax. In other words, these two statements are equivalent:\n\nSHOW COLUMNS FROM mytable FROM mydb;\nSHOW COLUMNS FROM mydb.mytable;\n\nThe optional EXTENDED keyword causes the output to include information\nabout hidden columns that MySQL uses internally and are not accessible\nby users.\n\nThe optional FULL keyword causes the output to include the column\ncollation and comments, as well as the privileges you have for each\ncolumn.\n\nThe LIKE clause, if present, indicates which column names to match. The\nWHERE clause can be given to select rows using more general conditions,\nas discussed in\nhttp://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nmysql> SHOW COLUMNS FROM City;\n+-------------+----------+------+-----+---------+----------------+\n| Field       | Type     | Null | Key | Default | Extra          |\n+-------------+----------+------+-----+---------+----------------+\n| ID          | int(11)  | NO   | PRI | NULL    | auto_increment |\n| Name        | char(35) | NO   |     |         |                |\n| CountryCode | char(3)  | NO   | MUL |         |                |\n| District    | char(20) | NO   |     |         |                |\n| Population  | int(11)  | NO   |     | 0       |                |\n+-------------+----------+------+-----+---------+----------------+\n\nThe data types may differ from what you expect them to be based on a\nCREATE TABLE statement because MySQL sometimes changes data types when\nyou create or alter a table. The conditions under which this occurs are\ndescribed in\nhttp://dev.mysql.com/doc/refman/8.0/en/silent-column-changes.html.\n\nSHOW COLUMNS displays the following values for each table column:\n\no Field\n\n  The column name.\n\no Type\n\n  The column data type.\n\no Collation\n\n  The collation for nonbinary string columns, or NULL for other\n  columns. This value is displayed only if you use the FULL keyword.\n\no Null\n\n  Column nullability. The value is YES if NULL values can be stored in\n  the column, NO if not.\n\no Key\n\n  Whether the column is indexed:\n\n  o If Key is empty, the column either is not indexed or is indexed\n    only as a secondary column in a multiple-column, nonunique index.\n\n  o If Key is PRI, the column is a PRIMARY KEY or is one of the columns\n    in a multiple-column PRIMARY KEY.\n\n  o If Key is UNI, the column is the first column of a UNIQUE index. (A\n    UNIQUE index permits multiple NULL values, but you can tell whether\n    the column permits NULL by checking the Null field.)\n\n  o If Key is MUL, the column is the first column of a nonunique index\n    in which multiple occurrences of a given value are permitted within\n    the column.\n\n  If more than one of the Key values applies to a given column of a\n  table, Key displays the one with the highest priority, in the order\n  PRI, UNI, MUL.\n\n  A UNIQUE index may be displayed as PRI if it cannot contain NULL\n  values and there is no PRIMARY KEY in the table. A UNIQUE index may\n  display as MUL if several columns form a composite UNIQUE index;\n  although the combination of the columns is unique, each column can\n  still hold multiple occurrences of a given value.\n\no Default\n\n  The default value for the column. This is NULL if the column has an\n  explicit default of NULL, or if the column definition includes no\n  DEFAULT clause.\n\no Extra\n\n  Any additional information that is available about a given column.\n  The value is nonempty in these cases:\n\n  o auto_increment for columns that have the AUTO_INCREMENT attribute\n\n  o on update CURRENT_TIMESTAMP for TIMESTAMP or DATETIME columns that\n    have the ON UPDATE CURRENT_TIMESTAMP attribute\n\n  o VIRTUAL GENERATED or VIRTUAL STORED for generated columns\n\no Privileges\n\n  The privileges you have for the column. This value is displayed only\n  if you use the FULL keyword.\n\no Comment\n\n  Any comment included in the column definition. This value is\n  displayed only if you use the FULL keyword.\n\nYou can also obtain information about table columns from\nINFORMATION_SCHEMA, which contains a COLUMNS table. See\nhttp://dev.mysql.com/doc/refman/8.0/en/columns-table.html. The extended\ninformation about hidden columns is available only using SHOW EXTENDED\nCOLUMNS; it cannot be obtained from the COLUMNS table.\n\nYou can list a table\'s columns with the mysqlshow db_name tbl_name\ncommand.\n\nThe DESCRIBE statement provides information similar to SHOW COLUMNS.\nSee http://dev.mysql.com/doc/refman/8.0/en/describe.html.\n\nThe SHOW CREATE TABLE, SHOW TABLE STATUS, and SHOW INDEX statements\nalso provide information about tables. See [HELP SHOW].\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-columns.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show-columns.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (328,24,'TINYINT','TINYINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA very small integer. The signed range is -128 to 127. The unsigned\nrange is 0 to 255.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (329,15,'MASTER_POS_WAIT','Syntax:\nMASTER_POS_WAIT(log_name,log_pos[,timeout][,channel])\n\nThis function is useful for control of master/slave synchronization. It\nblocks until the slave has read and applied all updates up to the\nspecified position in the master log. The return value is the number of\nlog events the slave had to wait for to advance to the specified\nposition. The function returns NULL if the slave SQL thread is not\nstarted, the slave\'s master information is not initialized, the\narguments are incorrect, or an error occurs. It returns -1 if the\ntimeout has been exceeded. If the slave SQL thread stops while\nMASTER_POS_WAIT() is waiting, the function returns NULL. If the slave\nis past the specified position, the function returns immediately.\n\nOn a multi-threaded slave, the function waits until expiry of the limit\nset by the slave_checkpoint_group or slave_checkpoint_period system\nvariable, when the checkpoint operation is called to update the status\nof the slave. Depending on the setting for the system variables, the\nfunction might therefore return some time after the specified position\nwas reached.\n\nIf a timeout value is specified, MASTER_POS_WAIT() stops waiting when\ntimeout seconds have elapsed. timeout must be greater than 0; a zero or\nnegative timeout means no timeout.\n\nThe optional channel value enables you to name which replication\nchannel the function applies to. See\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-channels.html for\nmore information.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (330,21,'^','Syntax:\n^\n\nBitwise XOR.\n\nThe result type depends on whether the arguments are evaluated as\nbinary strings or numbers:\n\no Binary-string evaluation occurs when the arguments have a binary\n  string type, and at least one of them is not a hexadecimal literal,\n  bit literal, or NULL literal. Numeric evaluation occurs otherwise,\n  with argument conversion to unsigned 64-bit integers as necessary.\n\no Binary-string evaluation produces a binary string of the same length\n  as the arguments. If the arguments have unequal lengths, an\n  ER_INVALID_BITWISE_OPERANDS_SIZE error occurs. Numeric evaluation\n  produces an unsigned 64-bit integer.\n\nFor more information, see the introductory discussion in this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/bit-functions.html\n\n','mysql> SELECT 1 ^ 1;\n        -> 0\nmysql> SELECT 1 ^ 0;\n        -> 1\nmysql> SELECT 11 ^ 3;\n        -> 8\nmysql> SELECT HEX(_binary X\'FEDC\' ^ X\'1111\');\n        -> \'EFCD\'\n','http://dev.mysql.com/doc/refman/8.0/en/bit-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (331,40,'DROP VIEW','Syntax:\nDROP VIEW [IF EXISTS]\n    view_name [, view_name] ...\n    [RESTRICT | CASCADE]\n\nDROP VIEW removes one or more views. You must have the DROP privilege\nfor each view.\n\nIf any views named in the argument list do not exist, the statement\nfails with an error indicating by name which nonexisting views it was\nunable to drop, and no changes are made.\n\n*Note*:\n\nIn MySQL 5.7 and earlier, DROP VIEW returns an error if any views named\nin the argument list do not exist, but also drops all views in the list\nthat do exist. Due to the change in behavior in MySQL 8.0, a partially\ncompleted DROP VIEW operation on a MySQL 5.7 master fails when\nreplicated on a MySQL 8.0 slave. To avoid this failure scenario, use IF\nEXISTS syntax in DROP VIEW statements to prevent an error from\noccurring for views that do not exist. For more information, see\nhttp://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html.\n\nThe IF EXISTS clause prevents an error from occurring for views that\ndon\'t exist. When this clause is given, a NOTE is generated for each\nnonexistent view. See [HELP SHOW WARNINGS].\n\nRESTRICT and CASCADE, if given, are parsed and ignored.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/drop-view.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/drop-view.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (332,33,'WEEK','Syntax:\nWEEK(date[,mode])\n\nThis function returns the week number for date. The two-argument form\nof WEEK() enables you to specify whether the week starts on Sunday or\nMonday and whether the return value should be in the range from 0 to 53\nor from 1 to 53. If the mode argument is omitted, the value of the\ndefault_week_format system variable is used. See\nhttp://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT WEEK(\'2008-02-20\');\n        -> 7\nmysql> SELECT WEEK(\'2008-02-20\',0);\n        -> 7\nmysql> SELECT WEEK(\'2008-02-20\',1);\n        -> 8\nmysql> SELECT WEEK(\'2008-12-31\',1);\n        -> 53\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (333,23,'DROP FUNCTION UDF','Syntax:\nDROP FUNCTION function_name\n\nThis statement drops the user-defined function (UDF) named\nfunction_name.\n\nTo drop a function, you must have the DELETE privilege for the mysql\ndatabase. This is because DROP FUNCTION removes a row from the\nmysql.func system table that records the function\'s name, type, and\nshared library name.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/drop-function-udf.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/drop-function-udf.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (334,8,'ST_VALIDATE','ST_Validate(g)\n\nValidates a geometry according to the OGC specification. A geometry can\nbe syntactically well-formed (WKB value plus SRID) but geometrically\ninvalid. For example, this polygon is geometrically invalid: POLYGON((0\n0, 0 0, 0 0, 0 0, 0 0))\n\nST_Validate() returns the geometry if it is syntactically well-formed\nand is geometrically valid, NULL if the argument is not syntactically\nwell-formed or is not geometrically valid or is NULL.\n\nST_Validate() can be used to filter out invalid geometry data, although\nat a cost. For applications that require more precise results not\ntainted by invalid data, this penalty may be worthwhile.\n\nIf the geometry argument is valid, it is returned as is, except that if\nan input Polygon or MultiPolygon has clockwise rings, those rings are\nreversed before checking for validity. If the geometry is valid, the\nvalue with the reversed rings is returned.\n\nThe only valid empty geometry is represented in the form of an empty\ngeometry collection value. ST_Validate() returns it directly without\nfurther checks in this case.\n\nST_Validate() handles its arguments as described in the introduction to\nthis section, with these exceptions:\n\no If the geometry is not syntactically well-formed, the return value is\n  NULL. An ER_GIS_INVALID_DATA error does not occur.\n\no If the geometry has an SRID value for a geographic spatial reference\n  system (SRS), an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS error occurs.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-convenience-functions.html\n\n','mysql> SET @ls1 = ST_GeomFromText(\'LINESTRING(0 0)\');\nmysql> SET @ls2 = ST_GeomFromText(\'LINESTRING(0 0, 1 1)\');\nmysql> SELECT ST_AsText(ST_Validate(@ls1));\n+------------------------------+\n| ST_AsText(ST_Validate(@ls1)) |\n+------------------------------+\n| NULL                         |\n+------------------------------+\nmysql> SELECT ST_AsText(ST_Validate(@ls2));\n+------------------------------+\n| ST_AsText(ST_Validate(@ls2)) |\n+------------------------------+\n| LINESTRING(0 0,1 1)          |\n+------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/spatial-convenience-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (335,38,'UPDATEXML','Syntax:\nUpdateXML(xml_target, xpath_expr, new_xml)\n\nThis function replaces a single portion of a given fragment of XML\nmarkup xml_target with a new XML fragment new_xml, and then returns the\nchanged XML. The portion of xml_target that is replaced matches an\nXPath expression xpath_expr supplied by the user.\n\nIf no expression matching xpath_expr is found, or if multiple matches\nare found, the function returns the original xml_target XML fragment.\nAll three arguments should be strings.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/xml-functions.html\n\n','mysql> SELECT\n    ->   UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'/a\', \'<e>fff</e>\') AS val1,\n    ->   UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'/b\', \'<e>fff</e>\') AS val2,\n    ->   UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'//b\', \'<e>fff</e>\') AS val3,\n    ->   UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'/a/d\', \'<e>fff</e>\') AS val4,\n    ->   UpdateXML(\'<a><d></d><b>ccc</b><d></d></a>\', \'/a/d\', \'<e>fff</e>\') AS val5\n    -> \\G\n\n*************************** 1. row ***************************\nval1: <e>fff</e>\nval2: <a><b>ccc</b><d></d></a>\nval3: <a><e>fff</e><d></d></a>\nval4: <a><b>ccc</b><e>fff</e></a>\nval5: <a><d></d><b>ccc</b><d></d></a>\n','http://dev.mysql.com/doc/refman/8.0/en/xml-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (336,40,'CREATE SPATIAL REFERENCE SYSTEM','Syntax:\nCREATE OR REPLACE SPATIAL REFERENCE SYSTEM\n    srid srs_attribute ...\n\nCREATE SPATIAL REFERENCE SYSTEM\n    [IF NOT EXISTS]\n    srid srs_attribute ...\n\nsrs_attribute: {\n    NAME \'srs_name\'\n  | DEFINITION \'definition\'\n  | ORGANIZATION \'org_name\' IDENTIFIED BY org_id\n  | DESCRIPTION \'description\'\n}\n\nsrid, org_id: 32-bit unsigned integer\n\nThis statement creates a spatial reference system (SRS) definition and\nstores it in the data dictionary. The definition can be inspected using\nthe INFORMATION_SCHEMA ST_SPATIAL_REFERENCE_SYSTEMS table. This\nstatement requires the SUPER privilege.\n\nIf neither OR REPLACE nor IF NOT EXISTS is specified, an error occurs\nif an SRS definition with the SRID value already exists.\n\nWith CREATE OR REPLACE syntax, any existing SRS definition with the\nsame SRID value is replaced, unless the SRID value is used by some\ncolumn. In that case, an error occurs.\n\nWith CREATE ... IF NOT EXISTS syntax, any existing SRS definition with\nthe same SRID value causes the new definition to be ignored and a\nwarning occurs.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/create-spatial-reference-system.html\n\n','CREATE SPATIAL REFERENCE SYSTEM 4120\nNAME \'Greek\'\nORGANIZATION \'EPSG\' IDENTIFIED BY 4120\nDEFINITION\n  \'GEOGCS["Greek",DATUM["Greek",SPHEROID["Bessel 1841",\n  6377397.155,299.1528128,AUTHORITY["EPSG","7004"]],\n  AUTHORITY["EPSG","6120"]],PRIMEM["Greenwich",0,\n  AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,\n  AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],\n  AUTHORITY["EPSG","4120"]]\';\n','http://dev.mysql.com/doc/refman/8.0/en/create-spatial-reference-system.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (337,9,'RESET SLAVE','Syntax:\nRESET SLAVE [ALL] [channel_option]\n\nchannel_option:\n    FOR CHANNEL channel\n\nRESET SLAVE makes the slave forget its replication position in the\nmaster\'s binary log. This statement is meant to be used for a clean\nstart: It clears the master info and relay log info repositories,\ndeletes all the relay log files, and starts a new relay log file. It\nalso resets to 0 the replication delay specified with the MASTER_DELAY\noption to CHANGE MASTER TO. RESET SLAVE does not change the values of\ngtid_executed or gtid_purged. To use RESET SLAVE, the slave replication\nthreads must be stopped, so on a running slave use STOP SLAVE before\nissuing RESET SLAVE.\n\n*Note*:\n\nAll relay log files are deleted, even if they have not been completely\nexecuted by the slave SQL thread. (This is a condition likely to exist\non a replication slave if you have issued a STOP SLAVE statement or if\nthe slave is highly loaded.)\n\nThe optional FOR CHANNEL channel clause enables you to name which\nreplication channel the statement applies to. Providing a FOR CHANNEL\nchannel clause applies the RESET SLAVE statement to a specific\nreplication channel. Combining a FOR CHANNEL channel clause with the\nALL option deletes the specified channel. If no channel is named and no\nextra channels exist, the statement applies to the default channel.\nIssuing a RESET SLAVE ALL statement without a FOR CHANNEL channel\nclause when multiple replication channels exist deletes all replication\nchannels and recreates only the default channel. See\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-channels.html for\nmore information.\n\nRESET SLAVE does not change any replication connection parameters such\nas master host, master port, master user, or master password, which are\nretained in memory. This means that START SLAVE can be issued without\nrequiring a CHANGE MASTER TO statement following RESET SLAVE.\n\nConnection parameters are reset by RESET SLAVE ALL. (RESET SLAVE\nfollowed by a restart of the slave mysqld also does this.)\n\nRESET SLAVE ALL clears the IGNORE_SERVER_IDS list set by CHANGE MASTER\nTO.\n\nRESET SLAVE does not change any replication filter settings (such as\n--replicate-ignore-table) for channels affected by the statement.\nHowever, RESET SLAVE ALLremoves the replication filters that were set\non the channels deleted by the statement. When the deleted channel or\nchannels are recreated, any global replication filters specified for\nthe slave are copied to them, and no channel specific replication\nfilters are applied. For more information see\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-rules-channel-based-\nfilters.html.\n\nRESET SLAVE causes an implicit commit of an ongoing transaction. See\nhttp://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\nIf the slave SQL thread was in the middle of replicating temporary\ntables when it was stopped, and RESET SLAVE is issued, these replicated\ntemporary tables are deleted on the slave.\n\nRESET SLAVE does not reset the heartbeat period\n(Slave_heartbeat_period) or SSL_VERIFY_SERVER_CERT.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/reset-slave.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/reset-slave.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (338,8,'ST_POINTFROMGEOHASH','ST_PointFromGeoHash(geohash_str, srid)\n\nReturns a POINT value containing the decoded geohash value, given a\ngeohash string value.\n\nThe X and Y coordinates of the point are the longitude in the range\n[−180, 180] and the latitude in the range [−90, 90], respectively.\n\nThe srid argument is an 32-bit unsigned integer.\n\nThe remarks in the description of ST_LatFromGeoHash() regarding the\nmaximum number of characters processed from the geohash_str argument\nalso apply to ST_PointFromGeoHash().\n\nST_PointFromGeoHash() handles its arguments as described in the\nintroduction to this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-geohash-functions.html\n\n','mysql> SET @gh = ST_GeoHash(45,-20,10);\nmysql> SELECT ST_AsText(ST_PointFromGeoHash(@gh,0));\n+---------------------------------------+\n| ST_AsText(ST_PointFromGeoHash(@gh,0)) |\n+---------------------------------------+\n| POINT(45 -20)                         |\n+---------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/spatial-geohash-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (339,33,'DAY','Syntax:\nDAY(date)\n\nDAY() is a synonym for DAYOFMONTH().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (340,15,'UUID','Syntax:\nUUID()\n\nReturns a Universal Unique Identifier (UUID) generated according to RFC\n4122, "A Universally Unique IDentifier (UUID) URN Namespace"\n(http://www.ietf.org/rfc/rfc4122.txt).\n\nA UUID is designed as a number that is globally unique in space and\ntime. Two calls to UUID() are expected to generate two different\nvalues, even if these calls are performed on two separate devices not\nconnected to each other.\n\n*Warning*:\n\nAlthough UUID() values are intended to be unique, they are not\nnecessarily unguessable or unpredictable. If unpredictability is\nrequired, UUID values should be generated some other way.\n\nUUID() returns a value that conforms to UUID version 1 as described in\nRFC 4122. The value is a 128-bit number represented as a utf8 string of\nfive hexadecimal numbers in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\nformat:\n\no The first three numbers are generated from the low, middle, and high\n  parts of a timestamp. The high part also includes the UUID version\n  number.\n\no The fourth number preserves temporal uniqueness in case the timestamp\n  value loses monotonicity (for example, due to daylight saving time).\n\no The fifth number is an IEEE 802 node number that provides spatial\n  uniqueness. A random number is substituted if the latter is not\n  available (for example, because the host device has no Ethernet card,\n  or it is unknown how to find the hardware address of an interface on\n  the host operating system). In this case, spatial uniqueness cannot\n  be guaranteed. Nevertheless, a collision should have very low\n  probability.\n\n  The MAC address of an interface is taken into account only on FreeBSD\n  and Linux. On other operating systems, MySQL uses a randomly\n  generated 48-bit number.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT UUID();\n        -> \'6ccd780c-baba-1026-9564-5b8c656024db\'\n','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (341,26,'LINESTRING','LineString(pt [, pt] ...)\n\nConstructs a LineString value from a number of Point or WKB Point\narguments. If the number of arguments is less than two, the return\nvalue is NULL.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (342,15,'SLEEP','Syntax:\nSLEEP(duration)\n\nSleeps (pauses) for the number of seconds given by the duration\nargument, then returns 0. The duration may have a fractional part. If\nthe argument is NULL or negative, SLEEP() produces a warning, or an\nerror in strict SQL mode.\n\nWhen sleep returns normally (without interruption), it returns 0:\n\nmysql> SELECT SLEEP(1000);\n+-------------+\n| SLEEP(1000) |\n+-------------+\n|           0 |\n+-------------+\n\nWhen SLEEP() is the only thing invoked by a query that is interrupted,\nit returns 1 and the query itself returns no error. This is true\nwhether the query is killed or times out:\n\no This statement is interrupted using KILL QUERY from another session:\n\nmysql> SELECT SLEEP(1000);\n+-------------+\n| SLEEP(1000) |\n+-------------+\n|           1 |\n+-------------+\n\no This statement is interrupted by timing out:\n\nmysql> SELECT /*+ MAX_EXECUTION_TIME(1) */ SLEEP(1000);\n+-------------+\n| SLEEP(1000) |\n+-------------+\n|           1 |\n+-------------+\n\nWhen SLEEP() is only part of a query that is interrupted, the query\nreturns an error:\n\no This statement is interrupted using KILL QUERY from another session:\n\nmysql> SELECT 1 FROM t1 WHERE SLEEP(1000);\nERROR 1317 (70100): Query execution was interrupted\n\no This statement is interrupted by timing out:\n\nmysql> SELECT /*+ MAX_EXECUTION_TIME(1000) */ 1 FROM t1 WHERE SLEEP(1000);\nERROR 3024 (HY000): Query execution was interrupted, maximum statement\nexecution time exceeded\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (343,29,'IMPORT TABLE','Syntax:\nIMPORT TABLE FROM sdi_file [, sdi_file] ...\n\nThe IMPORT TABLE statement imports MyISAM tables based on information\ncontained in .sdi (Serialized Dictionary Information) metadata files.\nIMPORT TABLE requires the FILE privilege to read the .sdi and table\ncontent files, and the CREATE privilege for the table to be created.\n\nTables can be exported from one server using mysqldump to write a file\nof SQL statements and imported into another server using mysql to\nprocess the dump file. IMPORT TABLE provides a faster alternative using\nthe "raw" table files.\n\nPrior to import, the files that provide the table content must be\nplaced in the appropriate schema directory for the import server, and\nthe .sdi file must be located in a directory accessible to the server.\nFor example, the .sdi file can be placed in the directory named by the\nsecure_file_priv system variable, or (if secure_file_priv is empty) in\na directory under the server data directory.\n\nThe following example describes how to export MyISAM tables named\nemployees and managers from the hr schema of one server and import them\ninto the hr schema of another server. The example uses these\nassumptions (to perform a similar operation on your own system, modify\nthe path names as appropriate):\n\no For the export server, export_basedir represents its base directory,\n  and its data directory is export_basedir/data.\n\no For the import server, import_basedir represents its base directory,\n  and its data directory is import_basedir/data.\n\no Table files are exported from the export server into the /tmp/export\n  directory and this directory is secure (not accessible to other\n  users).\n\no The import server uses /tmp/mysql-files as the directory named by its\n  secure_file_priv system variable.\n\nTo export tables from the export server, use this procedure:\n\n1. Ensure a consistent snapshot by executing this statement to lock the\n   tables so that they cannot be modified during export:\n\nmysql> FLUSH TABLES hr.employees, hr.managers WITH READ LOCK;\n\n   While the lock is in effect, the tables can still be used, but only\n   for read access.\n\n2. At the file system level, copy the .sdi and table content files from\n   the hr schema directory to the secure export directory:\n\n  o The .sdi file is located in the hr schema directory, but might not\n    have exactly the same basename as the table name. For example, the\n    .sdi files for the employees and managers tables might be named\n    employees_125.sdi and managers_238.sdi.\n\n  o For a MyISAM table, the content files are its .MYD data file and\n    .MYI index file.\n\n   Given those file names, the copy commands look like this:\n\nshell> cd export_basedir/data/hr\nshell> cp employees_125.sdi /tmp/export\nshell> cp managers_238.sdi /tmp/export\nshell> cp employees.{MYD,MYI} /tmp/export\nshell> cp managers.{MYD,MYI} /tmp/export\n\n3. Unlock the tables:\n\nmysql> UNLOCK TABLES;\n\nTo import tables into the import server, use this procedure:\n\n1. The import schema must exist. If necessary, execute this statement\n   to create it:\n\nmysql> CREATE SCHEMA hr;\n\n2. At the file system level, copy the .sdi files to the import server\n   secure_file_priv directory, /tmp/mysql-files. Also, copy the table\n   content files to the hr schema directory:\n\nshell> cd /tmp/export\nshell> cp employees_125.sdi /tmp/mysql-files\nshell> cp managers_238.sdi /tmp/mysql-files\nshell> cp employees.{MYD,MYI} import_basedir/data/hr\nshell> cp managers.{MYD,MYI} import_basedir/data/hr\n\n3. Import the tables by executing an IMPORT TABLE statement that names\n   the .sdi files:\n\nmysql> IMPORT TABLE FROM\n       \'/tmp/mysql-files/employees.sdi\',\n       \'/tmp/mysql-files/managers.sdi\';\n\nThe .sdi file need not be placed in the import server directory named\nby the secure_file_priv system variable if that variable is empty; it\ncan be in any directory accessible to the server, including the schema\ndirectory for the imported table. If the .sdi file is placed in that\ndirectory, however, it may be rewritten; the import operation creates a\nnew .sdi file for the table, which will overwrite the old .sdi file if\nthe operation uses the same file name for the new file.\n\nEach sdi_file value must be a string literal that names the .sdi file\nfor a table or is a pattern that matches .sdi files. If the string is a\npattern, any leading directory path and the .sdi file name suffix must\nbe given literally. Pattern characters are permitted only in the base\nname part of the file name:\n\no ? matches any single character\n\no * matches any sequence of characters, including no characters\n\nUsing a pattern, the previous IMPORT TABLE statement could have been\nwritten like this (assuming that the /tmp/mysql-files directory\ncontains no other .sdi files matching the pattern):\n\nIMPORT TABLE FROM \'/tmp/mysql-files/*.sdi\';\n\nTo interpret the location of .sdi file path names, the server uses the\nsame rules for IMPORT TABLE as the server-side rules for LOAD DATA\n(that is, the non-LOCAL rules). See [HELP LOAD DATA], paying particular\nattention to the rules used to interpret relative path names.\n\nIMPORT TABLE fails if the .sdi or table files cannot be located. After\nimporting a table, the server attempts to open it and reports as\nwarnings any problems detected. To attempt a repair to correct any\nreported issues, use REPAIR TABLE.\n\nIMPORT TABLE is not written to the binary log.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/import-table.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/import-table.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (344,7,'NULLIF','Syntax:\nNULLIF(expr1,expr2)\n\nReturns NULL if expr1 = expr2 is true, otherwise returns expr1. This is\nthe same as CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.\n\nThe return value has the same type as the first argument.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/control-flow-functions.html\n\n','mysql> SELECT NULLIF(1,1);\n        -> NULL\nmysql> SELECT NULLIF(1,2);\n        -> 1\n','http://dev.mysql.com/doc/refman/8.0/en/control-flow-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (345,4,'ROUND','Syntax:\nROUND(X), ROUND(X,D)\n\nRounds the argument X to D decimal places. The rounding algorithm\ndepends on the data type of X. D defaults to 0 if not specified. D can\nbe negative to cause D digits left of the decimal point of the value X\nto become zero.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT ROUND(-1.23);\n        -> -1\nmysql> SELECT ROUND(-1.58);\n        -> -2\nmysql> SELECT ROUND(1.58);\n        -> 2\nmysql> SELECT ROUND(1.298, 1);\n        -> 1.3\nmysql> SELECT ROUND(1.298, 0);\n        -> 1\nmysql> SELECT ROUND(23.298, -1);\n        -> 20\n','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (346,9,'STOP SLAVE','Syntax:\nSTOP SLAVE [thread_types]\n\nthread_types:\n    [thread_type [, thread_type] ... ]\n\nthread_type: IO_THREAD | SQL_THREAD\n\nchannel_option:\n    FOR CHANNEL channel\n\nStops the slave threads. STOP SLAVE requires the\nREPLICATION_SLAVE_ADMIN or SUPER privilege. Recommended best practice\nis to execute STOP SLAVE on the slave before stopping the slave server\n(see http://dev.mysql.com/doc/refman/8.0/en/server-shutdown.html, for\nmore information).\n\nWhen using the row-based logging format: You should execute STOP SLAVE\nor STOP SLAVE SQL_THREAD on the slave prior to shutting down the slave\nserver if you are replicating any tables that use a nontransactional\nstorage engine (see the Note later in this section).\n\nLike START SLAVE, this statement may be used with the IO_THREAD and\nSQL_THREAD options to name the thread or threads to be stopped.\n\nSTOP SLAVE causes an implicit commit of an ongoing transaction. See\nhttp://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\ngtid_next must be set to AUTOMATIC before issuing this statement.\n\nYou can control how long STOP SLAVE waits before timing out by setting\nthe rpl_stop_slave_timeout system variable. This can be used to avoid\ndeadlocks between STOP SLAVE and other slave SQL statements using\ndifferent client connections to the slave. When the timeout value is\nreached, the issuing client returns an error message and stops waiting,\nbut the STOP SLAVE instruction remains in effect. Once the slave\nthreads are no longer busy, the STOP SLAVE statement is executed and\nthe slave stops.\n\nSome CHANGE MASTER TO statements are allowed while the slave is\nrunning, depending on the states of the slave SQL and I/O threads.\nHowever, using STOP SLAVE prior to executing CHANGE MASTER TO in such\ncases is still supported. See [HELP CHANGE MASTER TO], and\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-solutions-switch.htm\nl, for more information.\n\nThe optional FOR CHANNEL channel clause enables you to name which\nreplication channel the statement applies to. Providing a FOR CHANNEL\nchannel clause applies the STOP SLAVE statement to a specific\nreplication channel. If no channel is named and no extra channels\nexist, the statement applies to the default channel. If a STOP SLAVE\nstatement does not name a channel when using multiple channels, this\nstatement stops the specified threads for all channels. This statement\ncannot be used with the group_replication_recovery channel. See\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-channels.html for\nmore information.\n\nWhen using statement-based replication: changing the master while it\nhas open temporary tables is potentially unsafe. This is one of the\nreasons why statement-based replication of temporary tables is not\nrecommended. You can find out whether there are any temporary tables on\nthe slave by checking the value of Slave_open_temp_tables; when using\nstatement-based replication, this value should be 0 before executing\nCHANGE MASTER TO. If there are any temporary tables open on the slave,\nissuing a CHANGE MASTER TO statement after issuing a STOP SLAVE causes\nan ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO warning.\n\nWhen using a multi-threaded slave (slave_parallel_workers is a nonzero\nvalue), any gaps in the sequence of transactions executed from the\nrelay log are closed as part of stopping the worker threads. If the\nslave is stopped unexpectedly (for example due to an error in a worker\nthread, or another thread issuing KILL) while a STOP SLAVE statement is\nexecuting, the sequence of executed transactions from the relay log may\nbecome inconsistent. See\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-features-transaction\n-inconsistencies.html for more information.\n\nIf the current replication event group has modified one or more\nnontransactional tables, STOP SLAVE waits for up to 60 seconds for the\nevent group to complete, unless you issue a KILL QUERY or KILL\nCONNECTION statement for the slave SQL thread. If the event group\nremains incomplete after the timeout, an error message is logged.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/stop-slave.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/stop-slave.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (347,33,'TIMEDIFF','Syntax:\nTIMEDIFF(expr1,expr2)\n\nTIMEDIFF() returns expr1 − expr2 expressed as a time value. expr1 and\nexpr2 are time or date-and-time expressions, but both must be of the\nsame type.\n\nThe result returned by TIMEDIFF() is limited to the range allowed for\nTIME values. Alternatively, you can use either of the functions\nTIMESTAMPDIFF() and UNIX_TIMESTAMP(), both of which return integers.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TIMEDIFF(\'2000:01:01 00:00:00\',\n    ->                 \'2000:01:01 00:00:00.000001\');\n        -> \'-00:00:00.000001\'\nmysql> SELECT TIMEDIFF(\'2008-12-31 23:59:59.000001\',\n    ->                 \'2008-12-30 01:01:01.000002\');\n        -> \'46:58:57.999999\'\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (348,15,'BIN_TO_UUID','BIN_TO_UUID(binary_uuid), BIN_TO_UUID(binary_uuid, swap_flag)\n\nBIN_TO_UUID() is the inverse of UUID_TO_BIN(). It converts a binary\nUUID to a string UUID and returns the result. The binary value should\nbe a UUID as a VARBINARY(16) value. The return value is a utf8 string\nof five hexadecimal numbers separated by dashes. (For details about\nthis format, see the UUID() function description.) If the UUID argument\nis NULL, the return value is NULL. If any argument is invalid, an error\noccurs.\n\nBIN_TO_UUID() takes one or two arguments:\n\no The one-argument form takes a binary UUID value. The UUID value is\n  assumed not to have its time-low and time-high parts swapped. The\n  string result is in the same order as the binary argument.\n\no The two-argument form takes a binary UUID value and a swap-flag\n  value:\n\n  o If swap_flag is 0, the two-argument form is equivalent to the\n    one-argument form. The string result is in the same order as the\n    binary argument.\n\n  o If swap_flag is 1, the UUID value is assumed to have its time-low\n    and time-high parts swapped. These parts are swapped back to their\n    original position in the result value.\n\nFor usage examples and information about time-part swapping, see the\nUUID_TO_BIN() function description.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (349,33,'ADDTIME','Syntax:\nADDTIME(expr1,expr2)\n\nADDTIME() adds expr2 to expr1 and returns the result. expr1 is a time\nor datetime expression, and expr2 is a time expression.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT ADDTIME(\'2007-12-31 23:59:59.999999\', \'1 1:1:1.000002\');\n        -> \'2008-01-02 01:01:01.000001\'\nmysql> SELECT ADDTIME(\'01:00:00.999999\', \'02:00:00.999998\');\n        -> \'03:00:01.999997\'\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (350,38,'UPPER','Syntax:\nUPPER(str)\n\nReturns the string str with all characters changed to uppercase\naccording to the current character set mapping. The default is utf8mb4.\n\nmysql> SELECT UPPER(\'Hej\');\n        -> \'HEJ\'\n\nSee the description of LOWER() for information that also applies to\nUPPER(). This included information about how to perform lettercase\nconversion of binary strings (BINARY, VARBINARY, BLOB) for which these\nfunctions are ineffective, and information about case folding for\nUnicode character sets.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (351,24,'MEDIUMBLOB','MEDIUMBLOB\n\nA BLOB column with a maximum length of 16,777,215 (224 − 1) bytes.\nEach MEDIUMBLOB value is stored using a 3-byte length prefix that\nindicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (352,33,'FROM_UNIXTIME','Syntax:\nFROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format)\n\nReturns a representation of the unix_timestamp argument as a value in\n\'YYYY-MM-DD HH:MM:SS\' or YYYYMMDDHHMMSS format, depending on whether\nthe function is used in a string or numeric context. The value is\nexpressed in the current time zone. unix_timestamp is an internal\ntimestamp value such as is produced by the UNIX_TIMESTAMP() function.\n\nIf format is given, the result is formatted according to the format\nstring, which is used the same way as listed in the entry for the\nDATE_FORMAT() function.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT FROM_UNIXTIME(1447430881);\n        -> \'2015-11-13 10:08:01\'\nmysql> SELECT FROM_UNIXTIME(1447430881) + 0;\n        -> 20151113100801\nmysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),\n    ->                      \'%Y %D %M %h:%i:%s %x\');\n        -> \'2015 13th November 10:08:01 2015\'\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (353,15,'INTERNAL_DATA_FREE','INTERNAL_DATA_FREE(ARGS)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (354,13,'SHA2','Syntax:\nSHA2(str, hash_length)\n\nCalculates the SHA-2 family of hash functions (SHA-224, SHA-256,\nSHA-384, and SHA-512). The first argument is the cleartext string to be\nhashed. The second argument indicates the desired bit length of the\nresult, which must have a value of 224, 256, 384, 512, or 0 (which is\nequivalent to 256). If either argument is NULL or the hash length is\nnot one of the permitted values, the return value is NULL. Otherwise,\nthe function result is a hash value containing the desired number of\nbits. See the notes at the beginning of this section about storing hash\nvalues efficiently.\n\nThe return value is a string in the connection character set.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SELECT SHA2(\'abc\', 224);\n        -> \'23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7\'\n','http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (355,15,'INTERNAL_CHECKSUM','INTERNAL_CHECKSUM(ARGS)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (356,7,'IFNULL','Syntax:\nIFNULL(expr1,expr2)\n\nIf expr1 is not NULL, IFNULL() returns expr1; otherwise it returns\nexpr2.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/control-flow-functions.html\n\n','mysql> SELECT IFNULL(1,0);\n        -> 1\nmysql> SELECT IFNULL(NULL,10);\n        -> 10\nmysql> SELECT IFNULL(1/0,10);\n        -> 10\nmysql> SELECT IFNULL(1/0,\'yes\');\n        -> \'yes\'\n','http://dev.mysql.com/doc/refman/8.0/en/control-flow-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (357,28,'SHOW FUNCTION CODE','Syntax:\nSHOW FUNCTION CODE func_name\n\nThis statement is similar to SHOW PROCEDURE CODE but for stored\nfunctions. See [HELP SHOW PROCEDURE CODE].\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-function-code.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show-function-code.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (358,28,'SHOW ERRORS','Syntax:\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW COUNT(*) ERRORS\n\nSHOW ERRORS is a diagnostic statement that is similar to SHOW WARNINGS,\nexcept that it displays information only for errors, rather than for\nerrors, warnings, and notes.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttp://dev.mysql.com/doc/refman/8.0/en/select.html.\n\nThe SHOW COUNT(*) ERRORS statement displays the number of errors. You\ncan also retrieve this number from the error_count variable:\n\nSHOW COUNT(*) ERRORS;\nSELECT @@error_count;\n\nSHOW ERRORS and error_count apply only to errors, not warnings or\nnotes. In other respects, they are similar to SHOW WARNINGS and\nwarning_count. In particular, SHOW ERRORS cannot display information\nfor more than max_error_count messages, and error_count can exceed the\nvalue of max_error_count if the number of errors exceeds\nmax_error_count.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-errors.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show-errors.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (359,28,'SET NAMES','Syntax:\nSET NAMES {\'charset_name\'\n    [COLLATE \'collation_name\'] | DEFAULT}\n\nThis statement sets the three session system variables\ncharacter_set_client, character_set_connection, and\ncharacter_set_results to the given character set. Setting\ncharacter_set_connection to charset_name also sets collation_connection\nto the default collation for charset_name. See\nhttp://dev.mysql.com/doc/refman/8.0/en/charset-connection.html.\n\nThe optional COLLATE clause may be used to specify a collation\nexplicitly. If given, the collation must one of the permitted\ncollations for charset_name.\n\ncharset_name and collation_name may be quoted or unquoted.\n\nThe default mapping can be restored by using a value of DEFAULT. The\ndefault depends on the server configuration.\n\nucs2, utf16, and utf32 cannot be used as a client character set, which\nmeans that they do not work for SET NAMES.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/set-names.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/set-names.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (360,20,'LEAST','Syntax:\nLEAST(value1,value2,...)\n\nWith two or more arguments, returns the smallest (minimum-valued)\nargument. The arguments are compared using the following rules:\n\no If any argument is NULL, the result is NULL. No comparison is needed.\n\no If all arguments are integer-valued, they are compared as integers.\n\no If at least one argument is double precision, they are compared as\n  double-precision values. Otherwise, if at least one argument is a\n  DECIMAL value, they are compared as DECIMAL values.\n\no If the arguments comprise a mix of numbers and strings, they are\n  compared as numbers.\n\no If any argument is a nonbinary (character) string, the arguments are\n  compared as nonbinary strings.\n\no In all other cases, the arguments are compared as binary strings.\n\nThe return type of LEAST() is the aggregated type of the comparison\nargument types.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT LEAST(2,0);\n        -> 0\nmysql> SELECT LEAST(34.0,3.0,5.0,767.0);\n        -> 3.0\nmysql> SELECT LEAST(\'B\',\'A\',\'C\');\n        -> \'A\'\n','http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (361,15,'CAN_ACCESS_COLUMN','CAN_ACCESS_COLUMN(ARGS)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (362,20,'=','=\n\nEqual:\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 1 = 0;\n        -> 0\nmysql> SELECT \'0\' = 0;\n        -> 1\nmysql> SELECT \'0.0\' = 0;\n        -> 1\nmysql> SELECT \'0.01\' = 0;\n        -> 0\nmysql> SELECT \'.01\' = 0.01;\n        -> 1\n','http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (363,38,'REGEXP_SUBSTR','REGEXP_SUBSTR(expr, pat[, pos[, occurrence[, match_type]]])\n\nReturns the substring of the string expr that matches the regular\nexpression specified by the pattern pat, NULL if there is no match. If\nexpr or pat is NULL, the return value is NULL.\n\nREGEXP_SUBSTR() takes these optional arguments:\n\no pos: The position in expr at which to start the search. If omitted,\n  the default is 1.\n\no occurrence: Which occurrence of a match to search for. If omitted,\n  the default is 1.\n\no match_type: A string that specifies how to perform matching. The\n  meaning is as described for REGEXP_LIKE().\n\nFor additional information about how matching occurs, see the\ndescription for REGEXP_LIKE().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/regexp.html\n\n','mysql> SELECT REGEXP_SUBSTR(\'abc def ghi\', \'[a-z]+\');\n+----------------------------------------+\n| REGEXP_SUBSTR(\'abc def ghi\', \'[a-z]+\') |\n+----------------------------------------+\n| abc                                    |\n+----------------------------------------+\nmysql> SELECT REGEXP_SUBSTR(\'abc def ghi\', \'[a-z]+\', 1, 3);\n+----------------------------------------------+\n| REGEXP_SUBSTR(\'abc def ghi\', \'[a-z]+\', 1, 3) |\n+----------------------------------------------+\n| ghi                                          |\n+----------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/regexp.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (364,5,'ST_GEOMCOLLFROMTEXT','ST_GeomCollFromText(wkt[, srid [, options]]),\nST_GeometryCollectionFromText(wkt[, srid [, options]]),\nST_GeomCollFromTxt(wkt[, srid [, options]])\n\nConstructs a GeometryCollection value using its WKT representation and\nSRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html\n\n','mysql> SET @g = "MULTILINESTRING((10 10, 11 11), (9 9, 10 10))";\nmysql> SELECT ST_AsText(ST_GeomCollFromText(@g));\n+--------------------------------------------+\n| ST_AsText(ST_GeomCollFromText(@g))         |\n+--------------------------------------------+\n| MULTILINESTRING((10 10,11 11),(9 9,10 10)) |\n+--------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (365,15,'IS_IPV4_MAPPED','Syntax:\nIS_IPV4_MAPPED(expr)\n\nThis function takes an IPv6 address represented in numeric form as a\nbinary string, as returned by INET6_ATON(). It returns 1 if the\nargument is a valid IPv4-mapped IPv6 address, 0 otherwise. IPv4-mapped\naddresses have the form ::ffff:ipv4_address.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT IS_IPV4_MAPPED(INET6_ATON(\'::10.0.5.9\'));\n        -> 0\nmysql> SELECT IS_IPV4_MAPPED(INET6_ATON(\'::ffff:10.0.5.9\'));\n        -> 1\n','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (366,11,'CREATE USER','Syntax:\nCREATE USER [IF NOT EXISTS]\n    user [auth_option] [, user [auth_option]] ...\n    DEFAULT ROLE role [, role ] ...\n    [REQUIRE {NONE | tls_option [[AND] tls_option] ...}]\n    [WITH resource_option [resource_option] ...]\n    [password_option | lock_option] ...\n\nuser:\n    (see )\n\nauth_option: {\n    IDENTIFIED BY \'auth_string\'\n  | IDENTIFIED WITH auth_plugin\n  | IDENTIFIED WITH auth_plugin BY \'auth_string\'\n  | IDENTIFIED WITH auth_plugin AS \'hash_string\'\n  | IDENTIFIED BY PASSWORD \'hash_string\'\n}\n\ntls_option: {\n   SSL\n | X509\n | CIPHER \'cipher\'\n | ISSUER \'issuer\'\n | SUBJECT \'subject\'\n}\n\nresource_option: {\n    MAX_QUERIES_PER_HOUR count\n  | MAX_UPDATES_PER_HOUR count\n  | MAX_CONNECTIONS_PER_HOUR count\n  | MAX_USER_CONNECTIONS count\n}\n\npassword_option: {\n    PASSWORD EXPIRE\n  | PASSWORD EXPIRE DEFAULT\n  | PASSWORD EXPIRE NEVER\n  | PASSWORD EXPIRE INTERVAL N DAY\n  | PASSWORD HISTORY DEFAULT\n  | PASSWORD HISTORY N\n  | PASSWORD REUSE INTERVAL DEFAULT\n  | PASSWORD REUSE INTERVAL N DAY\n}\n\nlock_option: {\n    ACCOUNT LOCK\n  | ACCOUNT UNLOCK\n}\n\nThe CREATE USER statement creates new MySQL accounts. It enables\nauthentication, SSL/TLS, resource-limit, and password-management\nproperties to be established for new accounts, and controls whether\naccounts are initially locked or unlocked.\n\nTo use CREATE USER, you must have the global CREATE USER privilege, or\nthe INSERT privilege for the mysql database. When the read_only system\nvariable is enabled, CREATE USER additionally requires the\nCONNECTION_ADMIN or SUPER privilege.\n\nCREATE USER either succeeds for all named users or rolls back and has\nno effect if any error occurs. By default, an error occurs if you try\nto create a user that already exists. If the IF NOT EXISTS clause is\ngiven, the statement produces a warning for each named user that\nalready exists, rather than an error.\n\nThe statement is written to the binary log if it succeeds, but not if\nit fails; in that case, rollback occurs and no changes are made. A\nstatement written to the binary log includes all named users. If the IF\nNOT EXISTS clause is given, this includes even users that already exist\nand were not created.\n\nThe statement written to the binary log specifies an authentication\nplugin for each user, determined as follows:\n\no The plugin named in the original statement, if one was specified.\n\no Otherwise, the default authentication plugin. In particular, if a\n  user u1 already exists and uses a nondefault authentication plugin,\n  the statement written to the binary log for CREATE USER IF NOT EXISTS\n  u1 names the default authentication plugin. (If the statement written\n  to the binary log must specify a nondefault authentication plugin for\n  a user, include it in the original statement.)\n\nIf the server adds the default authentication plugin for any\nnonexisting users in the statement written to the binary log, it writes\na warning to the error log naming those users.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/create-user.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/create-user.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (367,26,'POINT','Point(x, y)\n\nConstructs a Point using its coordinates.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (368,38,'LCASE','Syntax:\nLCASE(str)\n\nLCASE() is a synonym for LOWER().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (369,20,'IS NOT NULL','Syntax:\nIS NOT NULL\n\nTests whether a value is not NULL.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;\n        -> 1, 1, 0\n','http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (370,38,'MATCH AGAINST','Syntax:\nMATCH (col1,col2,...) AGAINST (expr [search_modifier])\n\nMySQL has support for full-text indexing and searching:\n\no A full-text index in MySQL is an index of type FULLTEXT.\n\no Full-text indexes can be used only with InnoDB or MyISAM tables, and\n  can be created only for CHAR, VARCHAR, or TEXT columns.\n\no MySQL provides a built-in full-text ngram parser that supports\n  Chinese, Japanese, and Korean (CJK), and an installable MeCab\n  full-text parser plugin for Japanese. Parsing differences are\n  outlined in\n  http://dev.mysql.com/doc/refman/8.0/en/fulltext-search-ngram.html,\n  and\n  http://dev.mysql.com/doc/refman/8.0/en/fulltext-search-mecab.html.\n\no A FULLTEXT index definition can be given in the CREATE TABLE\n  statement when a table is created, or added later using ALTER TABLE\n  or CREATE INDEX.\n\no For large data sets, it is much faster to load your data into a table\n  that has no FULLTEXT index and then create the index after that, than\n  to load data into a table that has an existing FULLTEXT index.\n\nFull-text searching is performed using MATCH() ... AGAINST syntax.\nMATCH() takes a comma-separated list that names the columns to be\nsearched. AGAINST takes a string to search for, and an optional\nmodifier that indicates what type of search to perform. The search\nstring must be a string value that is constant during query evaluation.\nThis rules out, for example, a table column because that can differ for\neach row.\n\nThere are three types of full-text searches:\n\no A natural language search interprets the search string as a phrase in\n  natural human language (a phrase in free text). There are no special\n  operators, with the exception of double quote (") characters. The\n  stopword list applies. For more information about stopword lists, see\n  http://dev.mysql.com/doc/refman/8.0/en/fulltext-stopwords.html.\n\n  Full-text searches are natural language searches if the IN NATURAL\n  LANGUAGE MODE modifier is given or if no modifier is given. For more\n  information, see\n  http://dev.mysql.com/doc/refman/8.0/en/fulltext-natural-language.html\n  .\n\no A boolean search interprets the search string using the rules of a\n  special query language. The string contains the words to search for.\n  It can also contain operators that specify requirements such that a\n  word must be present or absent in matching rows, or that it should be\n  weighted higher or lower than usual. Certain common words (stopwords)\n  are omitted from the search index and do not match if present in the\n  search string. The IN BOOLEAN MODE modifier specifies a boolean\n  search. For more information, see\n  http://dev.mysql.com/doc/refman/8.0/en/fulltext-boolean.html.\n\no A query expansion search is a modification of a natural language\n  search. The search string is used to perform a natural language\n  search. Then words from the most relevant rows returned by the search\n  are added to the search string and the search is done again. The\n  query returns the rows from the second search. The IN NATURAL\n  LANGUAGE MODE WITH QUERY EXPANSION or WITH QUERY EXPANSION modifier\n  specifies a query expansion search. For more information, see\n  http://dev.mysql.com/doc/refman/8.0/en/fulltext-query-expansion.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html\n\n','mysql> SELECT id, body, MATCH (title,body) AGAINST\n    (\'Security implications of running MySQL as root\'\n    IN NATURAL LANGUAGE MODE) AS score\n    FROM articles WHERE MATCH (title,body) AGAINST\n    (\'Security implications of running MySQL as root\'\n    IN NATURAL LANGUAGE MODE);\n+----+-------------------------------------+-----------------+\n| id | body                                | score           |\n+----+-------------------------------------+-----------------+\n|  4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 |\n|  6 | When configured properly, MySQL ... | 1.3114095926285 |\n+----+-------------------------------------+-----------------+\n2 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (371,40,'CREATE EVENT','Syntax:\nCREATE\n    [DEFINER = { user | CURRENT_USER }]\n    EVENT\n    [IF NOT EXISTS]\n    event_name\n    ON SCHEDULE schedule\n    [ON COMPLETION [NOT] PRESERVE]\n    [ENABLE | DISABLE | DISABLE ON SLAVE]\n    [COMMENT \'string\']\n    DO event_body;\n\nschedule:\n    AT timestamp [+ INTERVAL interval] ...\n  | EVERY interval\n    [STARTS timestamp [+ INTERVAL interval] ...]\n    [ENDS timestamp [+ INTERVAL interval] ...]\n\ninterval:\n    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |\n              WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |\n              DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}\n\nThis statement creates and schedules a new event. The event will not\nrun unless the Event Scheduler is enabled. For information about\nchecking Event Scheduler status and enabling it if necessary, see\nhttp://dev.mysql.com/doc/refman/8.0/en/events-configuration.html.\n\nCREATE EVENT requires the EVENT privilege for the schema in which the\nevent is to be created. It might also require the SET_USER_ID or SUPER\nprivilege, depending on the DEFINER value, as described later in this\nsection.\n\nThe minimum requirements for a valid CREATE EVENT statement are as\nfollows:\n\no The keywords CREATE EVENT plus an event name, which uniquely\n  identifies the event in a database schema.\n\no An ON SCHEDULE clause, which determines when and how often the event\n  executes.\n\no A DO clause, which contains the SQL statement to be executed by an\n  event.\n\nThis is an example of a minimal CREATE EVENT statement:\n\nCREATE EVENT myevent\n    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR\n    DO\n      UPDATE myschema.mytable SET mycol = mycol + 1;\n\nThe previous statement creates an event named myevent. This event\nexecutes once---one hour following its creation---by running an SQL\nstatement that increments the value of the myschema.mytable table\'s\nmycol column by 1.\n\nThe event_name must be a valid MySQL identifier with a maximum length\nof 64 characters. Event names are not case-sensitive, so you cannot\nhave two events named myevent and MyEvent in the same schema. In\ngeneral, the rules governing event names are the same as those for\nnames of stored routines. See\nhttp://dev.mysql.com/doc/refman/8.0/en/identifiers.html.\n\nAn event is associated with a schema. If no schema is indicated as part\nof event_name, the default (current) schema is assumed. To create an\nevent in a specific schema, qualify the event name with a schema using\nschema_name.event_name syntax.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/create-event.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/create-event.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (372,8,'MBR DEFINITION','Its MBR (minimum bounding rectangle), or envelope. This is the bounding\ngeometry, formed by the minimum and maximum (X,Y) coordinates:\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-class-geometry.html\n\n','((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))\n','http://dev.mysql.com/doc/refman/8.0/en/gis-class-geometry.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (373,27,'ST_DIFFERENCE','ST_Difference(g1, g2)\n\nReturns a geometry that represents the point set difference of the\ngeometry values g1 and g2.\n\nST_Difference() handles its arguments as described in the introduction\nto this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','mysql> SET @g1 = Point(1,1), @g2 = Point(2,2);\nmysql> SELECT ST_AsText(ST_Difference(@g1, @g2));\n+------------------------------------+\n| ST_AsText(ST_Difference(@g1, @g2)) |\n+------------------------------------+\n| POINT(1 1)                         |\n+------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (374,26,'GEOMETRYCOLLECTION','GeometryCollection(g [, g] ...)\n\nConstructs a GeomCollection value from the geometry arguments.\n\nGeometryCollection() returns all the proper geometries contained in the\narguments even if a nonsupported geometry is present.\n\nGeometryCollection() with no arguments is permitted as a way to create\nan empty geometry. Also, functions such as ST_GeomFromText() that\naccept WKT geometry collection arguments understand both OpenGIS\n\'GEOMETRYCOLLECTION EMPTY\' standard syntax and MySQL\n\'GEOMETRYCOLLECTION()\' nonstandard syntax.\n\n*Note*:\n\nAs of MySQL 8.0.11. GeomCollection() and GeometryCollection() are\nsynonymous, with GeomCollection() the preferred function. Prior to\nMySQL 8.0.11, GeometryCollection() is the only permitted function.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (375,4,'*','Syntax:\n*\n\nMultiplication:\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html\n\n','mysql> SELECT 3*5;\n        -> 15\nmysql> SELECT 18014398509481984*18014398509481984.0;\n        -> 324518553658426726783156020576256.0\nmysql> SELECT 18014398509481984*18014398509481984;\n        -> out-of-range error\n','http://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (376,34,'ST_ASBINARY','ST_AsBinary(g [, options]), ST_AsWKB(g [, options])\n\nConverts a value in internal geometry format to its WKB representation\nand returns the binary result.\n\nThe function return value has geographic coordinates (latitude,\nlongitude) in the order specified by the spatial reference system that\napplies to the geometry argument. An optional options argument may be\ngiven to override the default axis order.\n\nST_AsBinary() and ST_AsWKB() handle their arguments as described in the\nintroduction to this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-format-conversion-functions.html\n\n','mysql> SET @g = ST_LineFromText(\'LINESTRING(0 5,5 10,10 15)\', 4326);\nmysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g)));\n+-----------------------------------------+\n| ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g))) |\n+-----------------------------------------+\n| LINESTRING(5 0,10 5,15 10)              |\n+-----------------------------------------+\nmysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, \'axis-order=long-lat\')));\n+----------------------------------------------------------------+\n| ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, \'axis-order=long-lat\'))) |\n+----------------------------------------------------------------+\n| LINESTRING(0 5,5 10,10 15)                                     |\n+----------------------------------------------------------------+\nmysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, \'axis-order=lat-long\')));\n+----------------------------------------------------------------+\n| ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, \'axis-order=lat-long\'))) |\n+----------------------------------------------------------------+\n| LINESTRING(5 0,10 5,15 10)                                     |\n+----------------------------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/gis-format-conversion-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (377,38,'TO_BASE64','Syntax:\nTO_BASE64(str)\n\nConverts the string argument to base-64 encoded form and returns the\nresult as a character string with the connection character set and\ncollation. If the argument is not a string, it is converted to a string\nbefore conversion takes place. The result is NULL if the argument is\nNULL. Base-64 encoded strings can be decoded using the FROM_BASE64()\nfunction.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT TO_BASE64(\'abc\'), FROM_BASE64(TO_BASE64(\'abc\'));\n        -> \'JWJj\', \'abc\'\n','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (378,13,'DES_DECRYPT','Syntax:\nDES_DECRYPT(crypt_str[,key_str])\n\nThis function was removed in MySQL 8.0.3.\n\nConsider using AES_ENCRYPT() and AES_DECRYPT() instead.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (379,3,'ST_AREA','ST_Area(poly)\n\nReturns a double-precision number indicating the area of the argument,\nas measured in its spatial reference system. For arguments of dimension\n0 or 1, the result is 0.\n\nThe result is the sum of the area values of all components for a\ngeometry collection. If a geometry collection is empty, its area is\nreturned as 0.\n\nST_Area() handles its arguments as described in the introduction to\nthis section, with these exceptions:\n\no If a geometry is empty, the return value is 0 rather than NULL.\n\no If the geometry has an SRID value for a geographic spatial reference\n  system (SRS), an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS error occurs.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html\n\n','mysql> SET @poly =\n       \'Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))\';\nmysql> SELECT ST_Area(ST_GeomFromText(@poly));\n+---------------------------------+\n| ST_Area(ST_GeomFromText(@poly)) |\n+---------------------------------+\n|                               4 |\n+---------------------------------+\n\nmysql> SET @mpoly =\n    -> \'MultiPolygon(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1)))\';\nmysql> SELECT ST_Area(ST_GeomFromText(@mpoly));\n+----------------------------------+\n| ST_Area(ST_GeomFromText(@mpoly)) |\n+----------------------------------+\n|                                8 |\n+----------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (380,29,'INSERT','Syntax:\nINSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]\n    [INTO] tbl_name\n    [PARTITION (partition_name [, partition_name] ...)]\n    [(col_name [, col_name] ...)]\n    {VALUES | VALUE} (value_list) [, (value_list)] ...\n    [ON DUPLICATE KEY UPDATE assignment_list]\n\nINSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]\n    [INTO] tbl_name\n    [PARTITION (partition_name [, partition_name] ...)]\n    SET assignment_list\n    [ON DUPLICATE KEY UPDATE assignment_list]\n\nINSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]\n    [INTO] tbl_name\n    [PARTITION (partition_name [, partition_name] ...)]\n    [(col_name [, col_name] ...)]\n    SELECT ...\n    [ON DUPLICATE KEY UPDATE assignment_list]\n\nvalue:\n    {expr | DEFAULT}\n\nvalue_list:\n    value [, value] ...\n\nassignment:\n    col_name = value\n\nassignment_list:\n    assignment [, assignment] ...\n\nINSERT inserts new rows into an existing table. The INSERT ... VALUES\nand INSERT ... SET forms of the statement insert rows based on\nexplicitly specified values. The INSERT ... SELECT form inserts rows\nselected from another table or tables. INSERT with an ON DUPLICATE KEY\nUPDATE clause enables existing rows to be updated if a row to be\ninserted would cause a duplicate value in a UNIQUE index or PRIMARY\nKEY.\n\nFor additional information about INSERT ... SELECT and INSERT ... ON\nDUPLICATE KEY UPDATE, see [HELP INSERT SELECT], and\nhttp://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html.\n\nIn MySQL 8.0, the DELAYED keyword is accepted but ignored by the\nserver. For the reasons for this, see [HELP INSERT DELAYED],\n\nInserting into a table requires the INSERT privilege for the table. If\nthe ON DUPLICATE KEY UPDATE clause is used and a duplicate key causes\nan UPDATE to be performed instead, the statement requires the UPDATE\nprivilege for the columns to be updated. For columns that are read but\nnot modified you need only the SELECT privilege (such as for a column\nreferenced only on the right hand side of an col_name=expr assignment\nin an ON DUPLICATE KEY UPDATE clause).\n\nWhen inserting into a partitioned table, you can control which\npartitions and subpartitions accept new rows. The PARTITION option\ntakes a list of the comma-separated names of one or more partitions or\nsubpartitions (or both) of the table. If any of the rows to be inserted\nby a given INSERT statement do not match one of the partitions listed,\nthe INSERT statement fails with the error Found a row not matching the\ngiven partition set. For more information and examples, see\nhttp://dev.mysql.com/doc/refman/8.0/en/partitioning-selection.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/insert.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/insert.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (381,17,'COUNT','Syntax:\nCOUNT(expr) [over_clause]\n\nReturns a count of the number of non-NULL values of expr in the rows\nretrieved by a SELECT statement. The result is a BIGINT value.\n\nIf there are no matching rows, COUNT() returns 0.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html\n\n','mysql> SELECT student.student_name,COUNT(*)\n       FROM student,course\n       WHERE student.student_id=course.student_id\n       GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (382,8,'JSON_ARRAY_APPEND','Syntax:\nJSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...)\n\nAppends values to the end of the indicated arrays within a JSON\ndocument and returns the result. Returns NULL if any argument is NULL.\nAn error occurs if the json_doc argument is not a valid JSON document\nor any path argument is not a valid path expression or contains a * or\n** wildcard.\n\nThe path-value pairs are evaluated left to right. The document produced\nby evaluating one pair becomes the new value against which the next\npair is evaluated.\n\nIf a path selects a scalar or object value, that value is autowrapped\nwithin an array and the new value is added to that array. Pairs for\nwhich the path does not identify any value in the JSON document are\nignored.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SET @j = \'["a", ["b", "c"], "d"]\';\nmysql> SELECT JSON_ARRAY_APPEND(@j, \'$[1]\', 1);\n+----------------------------------+\n| JSON_ARRAY_APPEND(@j, \'$[1]\', 1) |\n+----------------------------------+\n| ["a", ["b", "c", 1], "d"]        |\n+----------------------------------+\nmysql> SELECT JSON_ARRAY_APPEND(@j, \'$[0]\', 2);\n+----------------------------------+\n| JSON_ARRAY_APPEND(@j, \'$[0]\', 2) |\n+----------------------------------+\n| [["a", 2], ["b", "c"], "d"]      |\n+----------------------------------+\nmysql> SELECT JSON_ARRAY_APPEND(@j, \'$[1][0]\', 3);\n+-------------------------------------+\n| JSON_ARRAY_APPEND(@j, \'$[1][0]\', 3) |\n+-------------------------------------+\n| ["a", [["b", 3], "c"], "d"]         |\n+-------------------------------------+\n\nmysql> SET @j = \'{"a": 1, "b": [2, 3], "c": 4}\';\nmysql> SELECT JSON_ARRAY_APPEND(@j, \'$.b\', \'x\');\n+------------------------------------+\n| JSON_ARRAY_APPEND(@j, \'$.b\', \'x\')  |\n+------------------------------------+\n| {"a": 1, "b": [2, 3, "x"], "c": 4} |\n+------------------------------------+\nmysql> SELECT JSON_ARRAY_APPEND(@j, \'$.c\', \'y\');\n+--------------------------------------+\n| JSON_ARRAY_APPEND(@j, \'$.c\', \'y\')    |\n+--------------------------------------+\n| {"a": 1, "b": [2, 3], "c": [4, "y"]} |\n+--------------------------------------+\n\nmysql> SET @j = \'{"a": 1}\';\nmysql> SELECT JSON_ARRAY_APPEND(@j, \'$\', \'z\');\n+---------------------------------+\n| JSON_ARRAY_APPEND(@j, \'$\', \'z\') |\n+---------------------------------+\n| [{"a": 1}, "z"]                 |\n+---------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (383,24,'TINYTEXT','TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 255 (28 − 1) characters. The\neffective maximum length is less if the value contains multibyte\ncharacters. Each TINYTEXT value is stored using a 1-byte length prefix\nthat indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (384,8,'JSON_MERGE_PATCH()','Syntax:\nJSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...)\n\nPerforms an RFC 7396 (https://tools.ietf.org/html/rfc7396) compliant\nmerge of two or more JSON documents and returns the merged result,\nwithout preserving members having duplicate keys. Raises an error if at\nleast one of the documents passed as arguments to this function is not\nvalid.\n\n*Note*:\n\nFor an explanation and example of the differences between this function\nand JSON_MERGE_PRESERVE(), see\nhttp://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n#json-merge-patch-json-merge-preserve-compared.\n\nJSON_MERGE_PATCH() performs a merge as follows:\n\n1. If the first argument is not an object, the result of the merge is\n   the same as if an empty object had been merged with the second\n   argument.\n\n2. If the second argument is not an object, the result of the merge is\n   the second argument.\n\n3. If both arguments are objects, the result of the merge is an object\n   with the following members:\n\n  o All members of the first object which do not have a corresponding\n    member with the same key in the second object.\n\n  o All members of the second object which do not have a corresponding\n    key in the first object, and whose value is not the JSON null\n    literal.\n\n  o All members with a key that exists in both the first and the second\n    object, and whose value in the second object is not the JSON null\n    literal. The values of these members are the results of recursively\n    merging the value in the first object with the value in the second\n    object.\n\nFor additional information, see\nhttp://dev.mysql.com/doc/refman/8.0/en/json.html#json-normalization.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SELECT JSON_MERGE_PATCH(\'[1, 2]\', \'[true, false]\');\n+---------------------------------------------+\n| JSON_MERGE_PATCH(\'[1, 2]\', \'[true, false]\') |\n+---------------------------------------------+\n| [true, false]                               |\n+---------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'{"name": "x"}\', \'{"id": 47}\');\n+-------------------------------------------------+\n| JSON_MERGE_PATCH(\'{"name": "x"}\', \'{"id": 47}\') |\n+-------------------------------------------------+\n| {"id": 47, "name": "x"}                         |\n+-------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'1\', \'true\');\n+-------------------------------+\n| JSON_MERGE_PATCH(\'1\', \'true\') |\n+-------------------------------+\n| true                          |\n+-------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'[1, 2]\', \'{"id": 47}\');\n+------------------------------------------+\n| JSON_MERGE_PATCH(\'[1, 2]\', \'{"id": 47}\') |\n+------------------------------------------+\n| {"id": 47}                               |\n+------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'{ "a": 1, "b":2 }\',\n     >     \'{ "a": 3, "c":4 }\');\n+-----------------------------------------------------------+\n| JSON_MERGE_PATCH(\'{ "a": 1, "b":2 }\',\'{ "a": 3, "c":4 }\') |\n+-----------------------------------------------------------+\n| {"a": 3, "b": 2, "c": 4}                                  |\n+-----------------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'{ "a": 1, "b":2 }\',\'{ "a": 3, "c":4 }\',\n     >     \'{ "a": 5, "d":6 }\');\n+-------------------------------------------------------------------------------+\n| JSON_MERGE_PATCH(\'{ "a": 1, "b":2 }\',\'{ "a": 3, "c":4 }\',\'{ "a": 5, "d":6 }\') |\n+-------------------------------------------------------------------------------+\n| {"a": 5, "b": 2, "c": 4, "d": 6}                                              |\n+-------------------------------------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'{"a":1, "b":2}\', \'{"b":null}\');\n+--------------------------------------------------+\n| JSON_MERGE_PATCH(\'{"a":1, "b":2}\', \'{"b":null}\') |\n+--------------------------------------------------+\n| {"a": 1}                                         |\n+--------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'{"a":{"x":1}}\', \'{"a":{"y":2}}\');\n+----------------------------------------------------+\n| JSON_MERGE_PATCH(\'{"a":{"x":1}}\', \'{"a":{"y":2}}\') |\n+----------------------------------------------------+\n| {"a": {"x": 1, "y": 2}}                            |\n+----------------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (385,15,'DEFAULT','Syntax:\nDEFAULT(col_name)\n\nReturns the default value for a table column. An error results if the\ncolumn has no default value.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> UPDATE t SET i = DEFAULT(i)+1 WHERE id < 100;\n','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (386,22,'OPTIMIZE TABLE','Syntax:\nOPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL]\n    TABLE tbl_name [, tbl_name] ...\n\nOPTIMIZE TABLE reorganizes the physical storage of table data and\nassociated index data, to reduce storage space and improve I/O\nefficiency when accessing the table. The exact changes made to each\ntable depend on the storage engine used by that table.\n\nUse OPTIMIZE TABLE in these cases, depending on the type of table:\n\no After doing substantial insert, update, or delete operations on an\n  InnoDB table that has its own .ibd file because it was created with\n  the innodb_file_per_table option enabled. The table and indexes are\n  reorganized, and disk space can be reclaimed for use by the operating\n  system.\n\no After doing substantial insert, update, or delete operations on\n  columns that are part of a FULLTEXT index in an InnoDB table. Set the\n  configuration option innodb_optimize_fulltext_only=1 first. To keep\n  the index maintenance period to a reasonable time, set the\n  innodb_ft_num_word_optimize option to specify how many words to\n  update in the search index, and run a sequence of OPTIMIZE TABLE\n  statements until the search index is fully updated.\n\no After deleting a large part of a MyISAM or ARCHIVE table, or making\n  many changes to a MyISAM or ARCHIVE table with variable-length rows\n  (tables that have VARCHAR, VARBINARY, BLOB, or TEXT columns). Deleted\n  rows are maintained in a linked list and subsequent INSERT operations\n  reuse old row positions. You can use OPTIMIZE TABLE to reclaim the\n  unused space and to defragment the data file. After extensive changes\n  to a table, this statement may also improve performance of statements\n  that use the table, sometimes significantly.\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nOPTIMIZE TABLE works for InnoDB, MyISAM, and ARCHIVE tables.\n\nBy default, OPTIMIZE TABLE does not work for tables created using any\nother storage engine and returns a result indicating this lack of\nsupport. You can make OPTIMIZE TABLE work for other storage engines by\nstarting mysqld with the --skip-new option. In this case, OPTIMIZE\nTABLE is just mapped to ALTER TABLE.\n\nThis statement does not work with views.\n\nOPTIMIZE TABLE is supported for partitioned tables. For information\nabout using this statement with partitioned tables and table\npartitions, see\nhttp://dev.mysql.com/doc/refman/8.0/en/partitioning-maintenance.html.\n\nBy default, the server writes OPTIMIZE TABLE statements to the binary\nlog so that they replicate to replication slaves. To suppress logging,\nspecify the optional NO_WRITE_TO_BINLOG keyword or its alias LOCAL.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/optimize-table.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/optimize-table.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (387,13,'DECODE','Syntax:\nDECODE(crypt_str,pass_str)\n\nThis function was removed in MySQL 8.0.3.\n\nConsider using AES_ENCRYPT() and AES_DECRYPT() instead.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (388,8,'JSON_ARRAY_INSERT','Syntax:\nJSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)\n\nUpdates a JSON document, inserting into an array within the document\nand returning the modified document. Returns NULL if any argument is\nNULL. An error occurs if the json_doc argument is not a valid JSON\ndocument or any path argument is not a valid path expression or\ncontains a * or ** wildcard or does not end with an array element\nidentifier.\n\nThe path-value pairs are evaluated left to right. The document produced\nby evaluating one pair becomes the new value against which the next\npair is evaluated.\n\nPairs for which the path does not identify any array in the JSON\ndocument are ignored. If a path identifies an array element, the\ncorresponding value is inserted at that element position, shifting any\nfollowing values to the right. If a path identifies an array position\npast the end of an array, the value is inserted at the end of the\narray.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SET @j = \'["a", {"b": [1, 2]}, [3, 4]]\';\nmysql> SELECT JSON_ARRAY_INSERT(@j, \'$[1]\', \'x\');\n+------------------------------------+\n| JSON_ARRAY_INSERT(@j, \'$[1]\', \'x\') |\n+------------------------------------+\n| ["a", "x", {"b": [1, 2]}, [3, 4]]  |\n+------------------------------------+\nmysql> SELECT JSON_ARRAY_INSERT(@j, \'$[100]\', \'x\');\n+--------------------------------------+\n| JSON_ARRAY_INSERT(@j, \'$[100]\', \'x\') |\n+--------------------------------------+\n| ["a", {"b": [1, 2]}, [3, 4], "x"]    |\n+--------------------------------------+\nmysql> SELECT JSON_ARRAY_INSERT(@j, \'$[1].b[0]\', \'x\');\n+-----------------------------------------+\n| JSON_ARRAY_INSERT(@j, \'$[1].b[0]\', \'x\') |\n+-----------------------------------------+\n| ["a", {"b": ["x", 1, 2]}, [3, 4]]       |\n+-----------------------------------------+\nmysql> SELECT JSON_ARRAY_INSERT(@j, \'$[2][1]\', \'y\');\n+---------------------------------------+\n| JSON_ARRAY_INSERT(@j, \'$[2][1]\', \'y\') |\n+---------------------------------------+\n| ["a", {"b": [1, 2]}, [3, "y", 4]]     |\n+---------------------------------------+\nmysql> SELECT JSON_ARRAY_INSERT(@j, \'$[0]\', \'x\', \'$[2][1]\', \'y\');\n+----------------------------------------------------+\n| JSON_ARRAY_INSERT(@j, \'$[0]\', \'x\', \'$[2][1]\', \'y\') |\n+----------------------------------------------------+\n| ["x", "a", {"b": [1, 2]}, [3, 4]]                  |\n+----------------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (389,20,'<=>','Syntax:\n<=>\n\nNULL-safe equal. This operator performs an equality comparison like the\n= operator, but returns 1 rather than NULL if both operands are NULL,\nand 0 rather than NULL if one operand is NULL.\n\nThe <=> operator is equivalent to the standard SQL IS NOT DISTINCT FROM\noperator.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;\n        -> 1, 1, 0\nmysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;\n        -> 1, NULL, NULL\n','http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (390,28,'RESET','Syntax:\nRESET reset_option [, reset_option] ...\n\nreset_option: {\n    MASTER\n  | SLAVE\n}\n\nThe RESET statement is used to clear the state of various server\noperations. You must have the RELOAD privilege to execute RESET.\n\nFor information about the RESET PERSIST statement that removes\npersisted global system variables, see [HELP RESET PERSIST].\n\nRESET acts as a stronger version of the FLUSH statement. See [HELP\nFLUSH].\n\nThe RESET statement causes an implicit commit. See\nhttp://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\nThe following list describes the permitted RESET statement reset_option\nvalues:\n\no RESET MASTER\n\n  Deletes all binary logs listed in the index file, resets the binary\n  log index file to be empty, and creates a new binary log file.\n\no RESET SLAVE\n\n  Makes the slave forget its replication position in the master binary\n  logs. Also resets the relay log by deleting any existing relay log\n  files and beginning a new one.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/reset.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/reset.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (391,15,'GET_LOCK','Syntax:\nGET_LOCK(str,timeout)\n\nTries to obtain a lock with a name given by the string str, using a\ntimeout of timeout seconds. A negative timeout value means infinite\ntimeout. The lock is exclusive. While held by one session, other\nsessions cannot obtain a lock of the same name.\n\nReturns 1 if the lock was obtained successfully, 0 if the attempt timed\nout (for example, because another client has previously locked the\nname), or NULL if an error occurred (such as running out of memory or\nthe thread was killed with mysqladmin kill).\n\nA lock obtained with GET_LOCK() is released explicitly by executing\nRELEASE_LOCK() or implicitly when your session terminates (either\nnormally or abnormally). Lock release may also occur with another call\nto GET_LOCK():\n\no GET_LOCK() is implemented using the metadata locking (MDL) subsystem.\n  Multiple simultaneous locks can be acquired and GET_LOCK() does not\n  release any existing locks. It is even possible for a given session\n  to acquire multiple locks for the same name. Other sessions cannot\n  acquire a lock with that name until the acquiring session releases\n  all its locks for the name.\n\n  Locks acquired with GET_LOCK() appear in the Performance Schema\n  metadata_locks table. The OBJECT_TYPE column says USER LEVEL LOCK and\n  the OBJECT_NAME column indicates the lock name. Also, the capability\n  of acquiring multiple locks introduces the possibility of deadlock\n  among clients. When this happens, the server chooses a caller and\n  terminates its lock-acquisition request with an ER_USER_LOCK_DEADLOCK\n  error. This error does not cause transactions to roll back.\n\nFor example, suppose that you execute these statements:\n\nSELECT GET_LOCK(\'lock1\',10);\nSELECT GET_LOCK(\'lock2\',10);\nSELECT RELEASE_LOCK(\'lock2\');\nSELECT RELEASE_LOCK(\'lock1\');\n\nThe second GET_LOCK() acquires a second lock and both RELEASE_LOCK()\ncalls return 1 (success).\n\nMySQL enforces a maximum length on lock names of 64 characters.\n\nLocks obtained with GET_LOCK() are not released when transactions\ncommit or roll back.\n\nGET_LOCK() can be used to implement application locks or to simulate\nrecord locks. Names are locked on a server-wide basis. If a name has\nbeen locked within one session, GET_LOCK() blocks any request by\nanother session for a lock with the same name. This enables clients\nthat agree on a given lock name to use the name to perform cooperative\nadvisory locking. But be aware that it also enables a client that is\nnot among the set of cooperating clients to lock a name, either\ninadvertently or deliberately, and thus prevent any of the cooperating\nclients from locking that name. One way to reduce the likelihood of\nthis is to use lock names that are database-specific or\napplication-specific. For example, use lock names of the form\ndb_name.str or app_name.str.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (392,18,'ICU_VERSION','ICU_VERSION()\n\nThe version of the International Components for Unicode (ICU) library\nused to support regular expression operations (see\nhttp://dev.mysql.com/doc/refman/8.0/en/regexp.html). This function is\nprimarily intended for use in test cases.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/information-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (393,24,'BIGINT','BIGINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA large integer. The signed range is -9223372036854775808 to\n9223372036854775807. The unsigned range is 0 to 18446744073709551615.\n\nSERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (394,33,'CURTIME','Syntax:\nCURTIME([fsp])\n\nReturns the current time as a value in \'HH:MM:SS\' or HHMMSS format,\ndepending on whether the function is used in a string or numeric\ncontext. The value is expressed in the current time zone.\n\nIf the fsp argument is given to specify a fractional seconds precision\nfrom 0 to 6, the return value includes a fractional seconds part of\nthat many digits.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT CURTIME();\n        -> \'23:50:26\'\nmysql> SELECT CURTIME() + 0;\n        -> 235026.000000\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (395,37,'ST_DIMENSION','ST_Dimension(g)\n\nReturns the inherent dimension of the geometry value g. The dimension\ncan be −1, 0, 1, or 2. The meaning of these values is given in\nhttp://dev.mysql.com/doc/refman/8.0/en/gis-class-geometry.html.\n\nST_Dimension() handles its arguments as described in the introduction\nto this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html\n\n','mysql> SELECT ST_Dimension(ST_GeomFromText(\'LineString(1 1,2 2)\'));\n+------------------------------------------------------+\n| ST_Dimension(ST_GeomFromText(\'LineString(1 1,2 2)\')) |\n+------------------------------------------------------+\n|                                                    1 |\n+------------------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (396,28,'SET','Syntax:\nSET variable_assignment [, variable_assignment] ...\n\nvariable_assignment:\n      user_var_name = expr\n    | param_name = expr\n    | local_var_name = expr\n    | [GLOBAL | SESSION | PERSIST | PERSIST_ONLY]\n        system_var_name = expr\n    | [@@global. | @@session. | @@persist. | @@persist_only. | @@]\n        system_var_name = expr\n\nSET syntax for variable assignment enables you to assign values to\ndifferent types of variables that affect the operation of the server or\nclients:\n\no System variables. See\n  http://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n  System variables also can be set at server startup, as described in\n  http://dev.mysql.com/doc/refman/8.0/en/using-system-variables.html.\n  (To display system variable names and values, use the SHOW VARIABLES\n  statement; see [HELP SHOW VARIABLES].)\n\n  System variables implemented by a server component are exposed when\n  the component is installed and have names that begin with a\n  component-specific prefix. For example, the log_filter_dragnet error\n  log filter component implements a system variable named\n  log_error_filter_rules, the full name of which is\n  dragnet.log_error_filter_rules. To refer to this variable, use the\n  full name.\n\no User-defined variables. See\n  http://dev.mysql.com/doc/refman/8.0/en/user-variables.html.\n\no Stored procedure and function parameters, and stored program local\n  variables. See\n  http://dev.mysql.com/doc/refman/8.0/en/stored-program-variables.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/set-variable.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/set-variable.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (397,8,'JSON_MERGE','Syntax:\nJSON_MERGE(json_doc, json_doc[, json_doc] ...)\n\nMerges two or more JSON documents. Synonym for JSON_MERGE_PRESERVE();\ndeprecated in MySQL 8.0.3 and subject to removal in a future release.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SELECT JSON_MERGE(\'[1, 2]\', \'[true, false]\');\n+---------------------------------------+\n| JSON_MERGE(\'[1, 2]\', \'[true, false]\') |\n+---------------------------------------+\n| [1, 2, true, false]                   |\n+---------------------------------------+\n1 row in set, 1 warning (0.00 sec)\n\nmysql> SHOW WARNINGS\\G\n*************************** 1. row ***************************\n  Level: Warning\n   Code: 1287\nMessage: \'JSON_MERGE\' is deprecated and will be removed in a future release. \\\n Please use JSON_MERGE_PRESERVE/JSON_MERGE_PATCH instead\n1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (398,29,'LOAD XML','Syntax:\nLOAD XML [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE \'file_name\'\n    [REPLACE | IGNORE]\n    INTO TABLE [db_name.]tbl_name\n    [CHARACTER SET charset_name]\n    [ROWS IDENTIFIED BY \'<tagname>\']\n    [IGNORE number {LINES | ROWS}]\n    [(field_name_or_user_var\n        [, field_name_or_user_var] ...)]\n    [SET col_name={expr | DEFAULT},\n        [, col_name={expr | DEFAULT}] ...]\n\nThe LOAD XML statement reads data from an XML file into a table. The\nfile_name must be given as a literal string. The tagname in the\noptional ROWS IDENTIFIED BY clause must also be given as a literal\nstring, and must be surrounded by angle brackets (< and >).\n\nLOAD XML acts as the complement of running the mysql client in XML\noutput mode (that is, starting the client with the --xml option). To\nwrite data from a table to an XML file, you can invoke the mysql client\nwith the --xml and -e options from the system shell, as shown here:\n\nshell> mysql --xml -e \'SELECT * FROM mydb.mytable\' > file.xml\n\nTo read the file back into a table, use LOAD XML INFILE. By default,\nthe <row> element is considered to be the equivalent of a database\ntable row; this can be changed using the ROWS IDENTIFIED BY clause.\n\nThis statement supports three different XML formats:\n\no Column names as attributes and column values as attribute values:\n\n<row column1="value1" column2="value2" .../>\n\no Column names as tags and column values as the content of these tags:\n\n<row>\n  <column1>value1</column1>\n  <column2>value2</column2>\n</row>\n\no Column names are the name attributes of <field> tags, and values are\n  the contents of these tags:\n\n<row>\n  <field name=\'column1\'>value1</field>\n  <field name=\'column2\'>value2</field>\n</row>\n\n  This is the format used by other MySQL tools, such as mysqldump.\n\nAll three formats can be used in the same XML file; the import routine\nautomatically detects the format for each row and interprets it\ncorrectly. Tags are matched based on the tag or attribute name and the\ncolumn name.\n\nThe following clauses work essentially the same way for LOAD XML as\nthey do for LOAD DATA:\n\no LOW_PRIORITY or CONCURRENT\n\no LOCAL\n\no REPLACE or IGNORE\n\no CHARACTER SET\n\no SET\n\nSee [HELP LOAD DATA], for more information about these clauses.\n\n(field_name_or_user_var, ...) is a list of one or more comma-separated\nXML fields or user variables. The name of a user variable used for this\npurpose must match the name of a field from the XML file, prefixed with\n@. You can use field names to select only desired fields. User\nvariables can be employed to store the corresponding field values for\nsubsequent re-use.\n\nThe IGNORE number LINES or IGNORE number ROWS clause causes the first\nnumber rows in the XML file to be skipped. It is analogous to the LOAD\nDATA statement\'s IGNORE ... LINES clause.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/load-xml.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/load-xml.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (399,4,'CONV','Syntax:\nCONV(N,from_base,to_base)\n\nConverts numbers between different number bases. Returns a string\nrepresentation of the number N, converted from base from_base to base\nto_base. Returns NULL if any argument is NULL. The argument N is\ninterpreted as an integer, but may be specified as an integer or a\nstring. The minimum base is 2 and the maximum base is 36. If from_base\nis a negative number, N is regarded as a signed number. Otherwise, N is\ntreated as unsigned. CONV() works with 64-bit precision.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT CONV(\'a\',16,2);\n        -> \'1010\'\nmysql> SELECT CONV(\'6E\',18,8);\n        -> \'172\'\nmysql> SELECT CONV(-17,10,-18);\n        -> \'-H\'\nmysql> SELECT CONV(10+\'10\'+\'10\'+X\'0a\',10,10);\n        -> \'40\'\n','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (400,5,'ST_MPOINTFROMTEXT','ST_MPointFromText(wkt[, srid [, options]]), ST_MultiPointFromText(wkt[,\nsrid [, options]])\n\nConstructs a MultiPoint value using its WKT representation and SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (401,15,'INTERNAL_GET_COMMENT_OR_ERROR','INTERNAL_GET_COMMENT_OR_ERROR(ARGS)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (402,16,'ASSIGN-VALUE','Syntax:\n:=\n\nAssignment operator. Causes the user variable on the left hand side of\nthe operator to take on the value to its right. The value on the right\nhand side may be a literal value, another variable storing a value, or\nany legal expression that yields a scalar value, including the result\nof a query (provided that this value is a scalar value). You can\nperform multiple assignments in the same SET statement. You can perform\nmultiple assignments in the same statement.\n\nUnlike =, the := operator is never interpreted as a comparison\noperator. This means you can use := in any valid SQL statement (not\njust in SET statements) to assign a value to a variable.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/assignment-operators.html\n\n','mysql> SELECT @var1, @var2;\n        -> NULL, NULL\nmysql> SELECT @var1 := 1, @var2;\n        -> 1, NULL\nmysql> SELECT @var1, @var2;\n        -> 1, NULL\nmysql> SELECT @var1, @var2 := @var1;\n        -> 1, 1\nmysql> SELECT @var1, @var2;\n        -> 1, 1\n\nmysql> SELECT @var1:=COUNT(*) FROM t1;\n        -> 4\nmysql> SELECT @var1;\n        -> 4\n','http://dev.mysql.com/doc/refman/8.0/en/assignment-operators.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (403,28,'SHOW OPEN TABLES','Syntax:\nSHOW OPEN TABLES\n    [{FROM | IN} db_name]\n    [LIKE \'pattern\' | WHERE expr]\n\nSHOW OPEN TABLES lists the non-TEMPORARY tables that are currently open\nin the table cache. See\nhttp://dev.mysql.com/doc/refman/8.0/en/table-cache.html. The FROM\nclause, if present, restricts the tables shown to those present in the\ndb_name database. The LIKE clause, if present, indicates which table\nnames to match. The WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-open-tables.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show-open-tables.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (404,33,'EXTRACT','Syntax:\nEXTRACT(unit FROM date)\n\nThe EXTRACT() function uses the same kinds of unit specifiers as\nDATE_ADD() or DATE_SUB(), but extracts parts from the date rather than\nperforming date arithmetic.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT EXTRACT(YEAR FROM \'2009-07-02\');\n       -> 2009\nmysql> SELECT EXTRACT(YEAR_MONTH FROM \'2009-07-02 01:02:03\');\n       -> 200907\nmysql> SELECT EXTRACT(DAY_MINUTE FROM \'2009-07-02 01:02:03\');\n       -> 20102\nmysql> SELECT EXTRACT(MICROSECOND\n    ->                FROM \'2003-01-02 10:30:00.000123\');\n        -> 123\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (405,13,'ENCRYPT','Syntax:\nENCRYPT(str[,salt])\n\nThis function was removed in MySQL 8.0.3. For one-way hashing, consider\nusing SHA2() instead.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (406,28,'SHOW STATUS','Syntax:\nSHOW [GLOBAL | SESSION] STATUS\n    [LIKE \'pattern\' | WHERE expr]\n\nSHOW STATUS provides server status information (see\nhttp://dev.mysql.com/doc/refman/8.0/en/server-status-variables.html).\nThis statement does not require any privilege. It requires only the\nability to connect to the server.\n\nStatus variable information is also available from these sources:\n\no Performance Schema tables. See\n  http://dev.mysql.com/doc/refman/8.0/en/performance-schema-status-vari\n  able-tables.html.\n\no The mysqladmin extended-status command. See\n  http://dev.mysql.com/doc/refman/8.0/en/mysqladmin.html.\n\nFor SHOW STATUS, a LIKE clause, if present, indicates which variable\nnames to match. A WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nSHOW STATUS accepts an optional GLOBAL or SESSION variable scope\nmodifier:\n\no With a GLOBAL modifier, the statement displays the global status\n  values. A global status variable may represent status for some aspect\n  of the server itself (for example, Aborted_connects), or the\n  aggregated status over all connections to MySQL (for example,\n  Bytes_received and Bytes_sent). If a variable has no global value,\n  the session value is displayed.\n\no With a SESSION modifier, the statement displays the status variable\n  values for the current connection. If a variable has no session\n  value, the global value is displayed. LOCAL is a synonym for SESSION.\n\no If no modifier is present, the default is SESSION.\n\nThe scope for each status variable is listed at\nhttp://dev.mysql.com/doc/refman/8.0/en/server-status-variables.html.\n\nEach invocation of the SHOW STATUS statement uses an internal temporary\ntable and increments the global Created_tmp_tables value.\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern:\n\nmysql> SHOW STATUS LIKE \'Key%\';\n+--------------------+----------+\n| Variable_name      | Value    |\n+--------------------+----------+\n| Key_blocks_used    | 14955    |\n| Key_read_requests  | 96854827 |\n| Key_reads          | 162040   |\n| Key_write_requests | 7589728  |\n| Key_writes         | 3813196  |\n+--------------------+----------+\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-status.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show-status.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (407,3,'ST_NUMINTERIORRINGS','ST_NumInteriorRing(poly), ST_NumInteriorRings(poly)\n\nReturns the number of interior rings in the Polygon value poly.\n\nST_NumInteriorRing() and ST_NuminteriorRings() handle their arguments\nas described in the introduction to this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html\n\n','mysql> SET @poly =\n    -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT ST_NumInteriorRings(ST_GeomFromText(@poly));\n+---------------------------------------------+\n| ST_NumInteriorRings(ST_GeomFromText(@poly)) |\n+---------------------------------------------+\n|                                           1 |\n+---------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (408,8,'JSON_KEYS','Syntax:\nJSON_KEYS(json_doc[, path])\n\nReturns the keys from the top-level value of a JSON object as a JSON\narray, or, if a path argument is given, the top-level keys from the\nselected path. Returns NULL if any argument is NULL, the json_doc\nargument is not an object, or path, if given, does not locate an\nobject. An error occurs if the json_doc argument is not a valid JSON\ndocument or the path argument is not a valid path expression or\ncontains a * or ** wildcard.\n\nThe result array is empty if the selected object is empty. If the\ntop-level value has nested subobjects, the return value does not\ninclude keys from those subobjects.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SELECT JSON_KEYS(\'{"a": 1, "b": {"c": 30}}\');\n+---------------------------------------+\n| JSON_KEYS(\'{"a": 1, "b": {"c": 30}}\') |\n+---------------------------------------+\n| ["a", "b"]                            |\n+---------------------------------------+\nmysql> SELECT JSON_KEYS(\'{"a": 1, "b": {"c": 30}}\', \'$.b\');\n+----------------------------------------------+\n| JSON_KEYS(\'{"a": 1, "b": {"c": 30}}\', \'$.b\') |\n+----------------------------------------------+\n| ["c"]                                        |\n+----------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (409,15,'INET6_ATON','Syntax:\nINET6_ATON(expr)\n\nGiven an IPv6 or IPv4 network address as a string, returns a binary\nstring that represents the numeric value of the address in network byte\norder (big endian). Because numeric-format IPv6 addresses require more\nbytes than the largest integer type, the representation returned by\nthis function has the VARBINARY data type: VARBINARY(16) for IPv6\naddresses and VARBINARY(4) for IPv4 addresses. If the argument is not a\nvalid address, INET6_ATON() returns NULL.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT HEX(INET6_ATON(\'fdfe::5a55:caff:fefa:9089\'));\n        -> \'FDFE0000000000005A55CAFFFEFA9089\'\nmysql> SELECT HEX(INET6_ATON(\'10.0.5.9\'));\n        -> \'0A000509\'\n','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (410,11,'DROP ROLE','Syntax:\nDROP ROLE [IF EXISTS] role [, role ] ...\n\nDROP ROLE removes one or more roles (named collections of privileges).\nTo use this statement, you must have the global DROP ROLE or CREATE\nUSER privilege. When the read_only system variable is enabled, DROP\nROLE additionally requires the CONNECTION_ADMIN or SUPER privilege.\n\nRoles named in the mandatory_roles system variable value cannot be\ndropped.\n\nDROP ROLE either succeeds for all named roles or rolls back and has no\neffect if any error occurs. By default, an error occurs if you try to\ndrop a role that does not exist. If the IF EXISTS clause is given, the\nstatement produces a warning for each named role that does not exist,\nrather than an error.\n\nThe statement is written to the binary log if it succeeds, but not if\nit fails; in that case, rollback occurs and no changes are made. A\nstatement written to the binary log includes all named roles. If the IF\nEXISTS clause is given, this includes even roles that do not exist and\nwere not dropped.\n\nEach role name uses the format described in\nhttp://dev.mysql.com/doc/refman/8.0/en/role-names.html. For example:\n\nDROP ROLE \'administrator\', \'developer\';\nDROP ROLE \'webapp\'@\'localhost\';\n\nThe host name part of the role name, if omitted, defaults to \'%\'.\n\nA dropped role is automatically revoked from any user account (or role)\nto which the role was granted. Within any current session for such an\naccount, its privileges are adjusted for the next statement executed.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/drop-role.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/drop-role.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (411,28,'SHOW SLAVE HOSTS','Syntax:\nSHOW SLAVE HOSTS\n\nDisplays a list of replication slaves currently registered with the\nmaster.\n\nSHOW SLAVE HOSTS should be executed on a server that acts as a\nreplication master. The statement displays information about servers\nthat are or have been connected as replication slaves, with each row of\nthe result corresponding to one slave server, as shown here:\n\nmysql> SHOW SLAVE HOSTS;\n+------------+-----------+------+-----------+--------------------------------------+\n| Server_id  | Host      | Port | Master_id | Slave_UUID                           |\n+------------+-----------+------+-----------+--------------------------------------+\n|  192168010 | iconnect2 | 3306 | 192168011 | 14cb6624-7f93-11e0-b2c0-c80aa9429562 |\n| 1921680101 | athena    | 3306 | 192168011 | 07af4990-f41f-11df-a566-7ac56fdaf645 |\n+------------+-----------+------+-----------+--------------------------------------+\n\no Server_id: The unique server ID of the slave server, as configured in\n  the slave server\'s option file, or on the command line with\n  --server-id=value.\n\no Host: The host name of the slave server as specified on the slave\n  with the --report-host option. This can differ from the machine name\n  as configured in the operating system.\n\no User: The slave server user name as, specified on the slave with the\n  --report-user option. Statement output includes this column only if\n  the master server is started with the --show-slave-auth-info option.\n\no Password: The slave server password as, specified on the slave with\n  the --report-password option. Statement output includes this column\n  only if the master server is started with the --show-slave-auth-info\n  option.\n\no Port: The port on the master to which the slave server is listening,\n  as specified on the slave with the --report-port option.\n\n  A zero in this column means that the slave port (--report-port) was\n  not set.\n\no Master_id: The unique server ID of the master server that the slave\n  server is replicating from. This is the server ID of the server on\n  which SHOW SLAVE HOSTS is executed, so this same value is listed for\n  each row in the result.\n\no Slave_UUID: The globally unique ID of this slave, as generated on the\n  slave and found in the slave\'s auto.cnf file.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-slave-hosts.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show-slave-hosts.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (412,9,'START TRANSACTION','Syntax:\nSTART TRANSACTION\n    [transaction_characteristic [, transaction_characteristic] ...]\n\ntransaction_characteristic:\n    WITH CONSISTENT SNAPSHOT\n  | READ WRITE\n  | READ ONLY\n\nBEGIN [WORK]\nCOMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nSET autocommit = {0 | 1}\n\nThese statements provide control over use of transactions:\n\no START TRANSACTION or BEGIN start a new transaction.\n\no COMMIT commits the current transaction, making its changes permanent.\n\no ROLLBACK rolls back the current transaction, canceling its changes.\n\no SET autocommit disables or enables the default autocommit mode for\n  the current session.\n\nBy default, MySQL runs with autocommit mode enabled. This means that as\nsoon as you execute a statement that updates (modifies) a table, MySQL\nstores the update on disk to make it permanent. The change cannot be\nrolled back.\n\nTo disable autocommit mode implicitly for a single series of\nstatements, use the START TRANSACTION statement:\n\nSTART TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nCOMMIT;\n\nWith START TRANSACTION, autocommit remains disabled until you end the\ntransaction with COMMIT or ROLLBACK. The autocommit mode then reverts\nto its previous state.\n\nSTART TRANSACTION permits several modifiers that control transaction\ncharacteristics. To specify multiple modifiers, separate them by\ncommas.\n\no The WITH CONSISTENT SNAPSHOT modifier starts a consistent read for\n  storage engines that are capable of it. This applies only to InnoDB.\n  The effect is the same as issuing a START TRANSACTION followed by a\n  SELECT from any InnoDB table. See\n  http://dev.mysql.com/doc/refman/8.0/en/innodb-consistent-read.html.\n  The WITH CONSISTENT SNAPSHOT modifier does not change the current\n  transaction isolation level, so it provides a consistent snapshot\n  only if the current isolation level is one that permits a consistent\n  read. The only isolation level that permits a consistent read is\n  REPEATABLE READ. For all other isolation levels, the WITH CONSISTENT\n  SNAPSHOT clause is ignored. A warning is generated when the WITH\n  CONSISTENT SNAPSHOT clause is ignored.\n\no The READ WRITE and READ ONLY modifiers set the transaction access\n  mode. They permit or prohibit changes to tables used in the\n  transaction. The READ ONLY restriction prevents the transaction from\n  modifying or locking both transactional and nontransactional tables\n  that are visible to other transactions; the transaction can still\n  modify or lock temporary tables.\n\n  MySQL enables extra optimizations for queries on InnoDB tables when\n  the transaction is known to be read-only. Specifying READ ONLY\n  ensures these optimizations are applied in cases where the read-only\n  status cannot be determined automatically. See\n  http://dev.mysql.com/doc/refman/8.0/en/innodb-performance-ro-txn.html\n  for more information.\n\n  If no access mode is specified, the default mode applies. Unless the\n  default has been changed, it is read/write. It is not permitted to\n  specify both READ WRITE and READ ONLY in the same statement.\n\n  In read-only mode, it remains possible to change tables created with\n  the TEMPORARY keyword using DML statements. Changes made with DDL\n  statements are not permitted, just as with permanent tables.\n\n  For additional information about transaction access mode, including\n  ways to change the default mode, see [HELP ISOLATION].\n\n  If the read_only system variable is enabled, explicitly starting a\n  transaction with START TRANSACTION READ WRITE requires the\n  CONNECTION_ADMIN or SUPER privilege.\n\n*Important*:\n\nMany APIs used for writing MySQL client applications (such as JDBC)\nprovide their own methods for starting transactions that can (and\nsometimes should) be used instead of sending a START TRANSACTION\nstatement from the client. See\nhttp://dev.mysql.com/doc/refman/8.0/en/connectors-apis.html, or the\ndocumentation for your API, for more information.\n\nTo disable autocommit mode explicitly, use the following statement:\n\nSET autocommit=0;\n\nAfter disabling autocommit mode by setting the autocommit variable to\nzero, changes to transaction-safe tables (such as those for InnoDB or\nNDB (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html)) are\nnot made permanent immediately. You must use COMMIT to store your\nchanges to disk or ROLLBACK to ignore the changes.\n\nautocommit is a session variable and must be set for each session. To\ndisable autocommit mode for each new connection, see the description of\nthe autocommit system variable at\nhttp://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nBEGIN and BEGIN WORK are supported as aliases of START TRANSACTION for\ninitiating a transaction. START TRANSACTION is standard SQL syntax, is\nthe recommended way to start an ad-hoc transaction, and permits\nmodifiers that BEGIN does not.\n\nThe BEGIN statement differs from the use of the BEGIN keyword that\nstarts a BEGIN ... END compound statement. The latter does not begin a\ntransaction. See [HELP BEGIN END].\n\n*Note*:\n\nWithin all stored programs (stored procedures and functions, triggers,\nand events), the parser treats BEGIN [WORK] as the beginning of a BEGIN\n... END block. Begin a transaction in this context with START\nTRANSACTION instead.\n\nThe optional WORK keyword is supported for COMMIT and ROLLBACK, as are\nthe CHAIN and RELEASE clauses. CHAIN and RELEASE can be used for\nadditional control over transaction completion. The value of the\ncompletion_type system variable determines the default completion\nbehavior. See\nhttp://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nThe AND CHAIN clause causes a new transaction to begin as soon as the\ncurrent one ends, and the new transaction has the same isolation level\nas the just-terminated transaction. The new transaction also uses the\nsame access mode (READ WRITE or READ ONLY) as the just-terminated\ntransaction. The RELEASE clause causes the server to disconnect the\ncurrent client session after terminating the current transaction.\nIncluding the NO keyword suppresses CHAIN or RELEASE completion, which\ncan be useful if the completion_type system variable is set to cause\nchaining or release completion by default.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/commit.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/commit.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (413,33,'TIME_FORMAT','Syntax:\nTIME_FORMAT(time,format)\n\nThis is used like the DATE_FORMAT() function, but the format string may\ncontain format specifiers only for hours, minutes, seconds, and\nmicroseconds. Other specifiers produce a NULL value or 0.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_FORMAT(\'100:00:00\', \'%H %k %h %I %l\');\n        -> \'100 100 04 04 4\'\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (414,15,'INTERNAL_GET_VIEW_WARNING_OR_ERROR','INTERNAL_GET_VIEW_WARNING_OR_ERROR(ARGS)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (415,17,'PERCENT_RANK','PERCENT_RANK() over_clause\n\nReturns the the percentage of partition values less than the value in\nthe current row, excluding the highest value. Return values range from\n0 to 1 and represent the row relative rank, calculated as the result of\nthis formula, where rank is the row rank and rows is the number of\npartition rows:\n\n(rank - 1) / (rows - 1)\n\nThis function should be used with ORDER BY to sort partition rows into\nthe desired order. Without ORDER BY, all rows are peers.\n\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nFor an example, see the CUME_DIST() function description.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (416,40,'CREATE DATABASE','Syntax:\nCREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name\n    [create_specification] ...\n\ncreate_specification:\n    [DEFAULT] CHARACTER SET [=] charset_name\n  | [DEFAULT] COLLATE [=] collation_name\n\nCREATE DATABASE creates a database with the given name. To use this\nstatement, you need the CREATE privilege for the database. CREATE\nSCHEMA is a synonym for CREATE DATABASE.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/create-database.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/create-database.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (417,17,'VAR_POP','Syntax:\nVAR_POP(expr) [over_clause]\n\nReturns the population standard variance of expr. It considers rows as\nthe whole population, not as a sample, so it has the number of rows as\nthe denominator. You can also use VARIANCE(), which is equivalent but\nis not standard SQL.\n\nIf there are no matching rows, VAR_POP() returns NULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (418,38,'CONCAT_WS','Syntax:\nCONCAT_WS(separator,str1,str2,...)\n\nCONCAT_WS() stands for Concatenate With Separator and is a special form\nof CONCAT(). The first argument is the separator for the rest of the\narguments. The separator is added between the strings to be\nconcatenated. The separator can be a string, as can the rest of the\narguments. If the separator is NULL, the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT CONCAT_WS(\',\',\'First name\',\'Second name\',\'Last Name\');\n        -> \'First name,Second name,Last Name\'\nmysql> SELECT CONCAT_WS(\',\',\'First name\',NULL,\'Last Name\');\n        -> \'First name,Last Name\'\n','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (419,24,'TEXT','TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 65,535 (216 − 1) characters.\nThe effective maximum length is less if the value contains multibyte\ncharacters. Each TEXT value is stored using a 2-byte length prefix that\nindicates the number of bytes in the value.\n\nAn optional length M can be given for this type. If this is done, MySQL\ncreates the column as the smallest TEXT type large enough to hold\nvalues M characters long.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (420,21,'~','Syntax:\n~\n\nInvert all bits.\n\nThe result type depends on whether the bit argument is evaluated as a\nbinary string or number:\n\no Binary-string evaluation occurs when the bit argument has a binary\n  string type, and is not a hexadecimal literal, bit literal, or NULL\n  literal. Numeric evaluation occurs otherwise, with argument\n  conversion to an unsigned 64-bit integer as necessary.\n\no Binary-string evaluation produces a binary string of the same length\n  as the bit argument. Numeric evaluation produces an unsigned 64-bit\n  integer.\n\nFor more information, see the introductory discussion in this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/bit-functions.html\n\n','mysql> SELECT 5 & ~1;\n        -> 4\nmysql> SELECT HEX(~X\'0000FFFF1111EEEE\');\n        -> \'FFFF0000EEEE1111\'\n','http://dev.mysql.com/doc/refman/8.0/en/bit-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (421,15,'GROUPING','GROUPING(expr [, expr] ...)\n\nFor GROUP BY queries that include a WITH ROLLUP modifier, the ROLLUP\noperation produces super-aggregate output rows where NULL represents\nthe set of all values. The GROUPING() function enables you to\ndistinguish NULL values for super-aggregate rows from NULL values in\nregular grouped rows.\n\nGROUPING() is permitted only in the select list or HAVING clause.\n\nEach argument to GROUPING() must be an expression that exactly matches\nan expression in the GROUP BY clause. The expression cannot be a\npositional specifier. For each expression, GROUPING() produces 1 if the\nexpression value in the current row is a NULL representing a\nsuper-aggregate value. Otherwise, GROUPING() produces 0, indicating\nthat the expression value is a NULL for a regular result row or is not\nNULL.\n\nSuppose that table t1 contains these rows, where NULL indicates\nsomething like "other" or "unknown":\n\nmysql> SELECT * FROM t1;\n+------+-------+----------+\n| name | size  | quantity |\n+------+-------+----------+\n| ball | small |       10 |\n| ball | large |       20 |\n| ball | NULL  |        5 |\n| hoop | small |       15 |\n| hoop | large |        5 |\n| hoop | NULL  |        3 |\n+------+-------+----------+\n\nA summary of the table without WITH ROLLUP looks like this:\n\nmysql> SELECT name, size, SUM(quantity) AS quantity\n       FROM t1\n       GROUP BY name, size;\n+------+-------+----------+\n| name | size  | quantity |\n+------+-------+----------+\n| ball | small |       10 |\n| ball | large |       20 |\n| ball | NULL  |        5 |\n| hoop | small |       15 |\n| hoop | large |        5 |\n| hoop | NULL  |        3 |\n+------+-------+----------+\n\nThe result contains NULL values, but those do not represent\nsuper-aggregate rows because the query does not include WITH ROLLUP.\n\nAdding WITH ROLLUP produces super-aggregate summary rows containing\nadditional NULL values. However, without comparing this result to the\nprevious one, it is not easy to see which NULL values occur in\nsuper-aggregate rows and which occur in regular grouped rows:\n\nmysql> SELECT name, size, SUM(quantity) AS quantity\n       FROM t1\n       GROUP BY name, size WITH ROLLUP;\n+------+-------+----------+\n| name | size  | quantity |\n+------+-------+----------+\n| ball | NULL  |        5 |\n| ball | large |       20 |\n| ball | small |       10 |\n| ball | NULL  |       35 |\n| hoop | NULL  |        3 |\n| hoop | large |        5 |\n| hoop | small |       15 |\n| hoop | NULL  |       23 |\n| NULL | NULL  |       58 |\n+------+-------+----------+\n\nTo distinguish NULL values in in super-aggregate rows from those in\nregular grouped rows, use GROUPING(), which returns 1 only for\nsuper-aggregate NULL values:\n\nmysql> SELECT\n         name, size, SUM(quantity) AS quantity,\n         GROUPING(name) AS grp_name,\n         GROUPING(size) AS grp_size\n       FROM t1\n       GROUP BY name, size WITH ROLLUP;\n+------+-------+----------+----------+----------+\n| name | size  | quantity | grp_name | grp_size |\n+------+-------+----------+----------+----------+\n| ball | NULL  |        5 |        0 |        0 |\n| ball | large |       20 |        0 |        0 |\n| ball | small |       10 |        0 |        0 |\n| ball | NULL  |       35 |        0 |        1 |\n| hoop | NULL  |        3 |        0 |        0 |\n| hoop | large |        5 |        0 |        0 |\n| hoop | small |       15 |        0 |        0 |\n| hoop | NULL  |       23 |        0 |        1 |\n| NULL | NULL  |       58 |        1 |        1 |\n+------+-------+----------+----------+----------+\n\nCommon uses for GROUPING():\n\no Substitute a label for super-aggregate NULL values:\n\nmysql> SELECT\n         IF(GROUPING(name) = 1, \'All items\', name) AS name,\n         IF(GROUPING(size) = 1, \'All sizes\', size) AS size,\n         SUM(quantity) AS quantity\n       FROM t1\n       GROUP BY name, size WITH ROLLUP;\n+-----------+-----------+----------+\n| name      | size      | quantity |\n+-----------+-----------+----------+\n| ball      | NULL      |        5 |\n| ball      | large     |       20 |\n| ball      | small     |       10 |\n| ball      | All sizes |       35 |\n| hoop      | NULL      |        3 |\n| hoop      | large     |        5 |\n| hoop      | small     |       15 |\n| hoop      | All sizes |       23 |\n| All items | All sizes |       58 |\n+-----------+-----------+----------+\n\no Return only super-aggregate lines by filtering out the regular\n  grouped lines:\n\nmysql> SELECT name, size, SUM(quantity) AS quantity\n       FROM t1\n       GROUP BY name, size WITH ROLLUP\n       HAVING GROUPING(name) = 1 OR GROUPING(size) = 1;\n+------+------+----------+\n| name | size | quantity |\n+------+------+----------+\n| ball | NULL |       35 |\n| hoop | NULL |       23 |\n| NULL | NULL |       58 |\n+------+------+----------+\n\nGROUPING() permits multiple expression arguments. In this case, the\nGROUPING() return value represents a bitmask combined from the results\nfor each expression, where the lowest-order bit corresponds to the\nresult for the rightmost expression. For example, with three expression\narguments, GROUPING(expr1, expr2, expr3) is evaluated like this:\n\n  result for GROUPING(expr3)\n+ result for GROUPING(expr2) << 1\n+ result for GROUPING(expr1) << 2\n\nThe following query shows how GROUPING() results for single arguments\ncombine for a multiple-argument call to produce a bitmask value:\n\nmysql> SELECT\n         name, size, SUM(quantity) AS quantity,\n         GROUPING(name) AS grp_name,\n         GROUPING(size) AS grp_size,\n       GROUPING(name, size) AS grp_all\n       FROM t1\n       GROUP BY name, size WITH ROLLUP;\n+------+-------+----------+----------+----------+---------+\n| name | size  | quantity | grp_name | grp_size | grp_all |\n+------+-------+----------+----------+----------+---------+\n| ball | NULL  |        5 |        0 |        0 |       0 |\n| ball | large |       20 |        0 |        0 |       0 |\n| ball | small |       10 |        0 |        0 |       0 |\n| ball | NULL  |       35 |        0 |        1 |       1 |\n| hoop | NULL  |        3 |        0 |        0 |       0 |\n| hoop | large |        5 |        0 |        0 |       0 |\n| hoop | small |       15 |        0 |        0 |       0 |\n| hoop | NULL  |       23 |        0 |        1 |       1 |\n| NULL | NULL  |       58 |        1 |        1 |       3 |\n+------+-------+----------+----------+----------+---------+\n\nWith multiple expression arguments, the GROUPING() return value is\nnonzero if any expression represents a super-aggregate value.\nMultiple-argument GROUPING() syntax thus provides a simpler way to\nwrite the earlier query that returned only super-aggregate rows, by\nusing a single multiple-argument GROUPING() call rather than multiple\nsingle-argument calls:\n\nmysql> SELECT name, size, SUM(quantity) AS quantity\n       FROM t1\n       GROUP BY name, size WITH ROLLUP\n       HAVING GROUPING(name, size) <> 0;\n+------+------+----------+\n| name | size | quantity |\n+------+------+----------+\n| ball | NULL |       35 |\n| hoop | NULL |       23 |\n| NULL | NULL |       58 |\n+------+------+----------+\n\nUse of GROUPING() is subject to these limitations:\n\no Do not use subquery GROUP BY expressions as GROUPING() arguments\n  because matching might fail. For example, matching fails for this\n  query:\n\nmysql> SELECT GROUPING((SELECT MAX(name) FROM t1))\n       FROM t1\n       GROUP BY (SELECT MAX(name) FROM t1) WITH ROLLUP;\nERROR 3580 (HY000): Argument #1 of GROUPING function is not in GROUP BY\n\no GROUP BY literal expressions should not be used within a HAVING\n  clause as GROUPING() arguments. Due to differences between when the\n  optimizer evaluates GROUP BY and HAVING, matching may succeed but\n  GROUPING() evaluation does not produce the expected result. Consider\n  this query:\n\nSELECT a AS f1, \'w\' AS f2\nFROM t\nGROUP BY f1, f2 WITH ROLLUP\nHAVING GROUPING(f2) = 1;\n\n  GROUPING() is evaluated earlier for the literal constant expression\n  than for the HAVING clause as a whole and returns 0. To check whether\n  a query such as this is affected, use EXPLAIN and look for Impossible\n  having in the Extra column.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (422,4,'ASIN','Syntax:\nASIN(X)\n\nReturns the arc sine of X, that is, the value whose sine is X. Returns\nNULL if X is not in the range -1 to 1.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT ASIN(0.2);\n        -> 0.20135792079033\nmysql> SELECT ASIN(\'foo\');\n\n+-------------+\n| ASIN(\'foo\') |\n+-------------+\n|           0 |\n+-------------+\n1 row in set, 1 warning (0.00 sec)\n\nmysql> SHOW WARNINGS;\n+---------+------+-----------------------------------------+\n| Level   | Code | Message                                 |\n+---------+------+-----------------------------------------+\n| Warning | 1292 | Truncated incorrect DOUBLE value: \'foo\' |\n+---------+------+-----------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (423,18,'ROW_COUNT','Syntax:\nROW_COUNT()\n\nROW_COUNT() returns a value as follows:\n\no DDL statements: 0. This applies to statements such as CREATE TABLE or\n  DROP TABLE.\n\no DML statements other than SELECT: The number of affected rows. This\n  applies to statements such as UPDATE, INSERT, or DELETE (as before),\n  but now also to statements such as ALTER TABLE and LOAD DATA INFILE.\n\no SELECT: -1 if the statement returns a result set, or the number of\n  rows "affected" if it does not. For example, for SELECT * FROM t1,\n  ROW_COUNT() returns -1. For SELECT * FROM t1 INTO OUTFILE\n  \'file_name\', ROW_COUNT() returns the number of rows written to the\n  file.\n\no SIGNAL statements: 0.\n\nFor UPDATE statements, the affected-rows value by default is the number\nof rows actually changed. If you specify the CLIENT_FOUND_ROWS flag to\nmysql_real_connect() when connecting to mysqld, the affected-rows value\nis the number of rows "found"; that is, matched by the WHERE clause.\n\nFor REPLACE statements, the affected-rows value is 2 if the new row\nreplaced an old row, because in this case, one row was inserted after\nthe duplicate was deleted.\n\nFor INSERT ... ON DUPLICATE KEY UPDATE statements, the affected-rows\nvalue per row is 1 if the row is inserted as a new row, 2 if an\nexisting row is updated, and 0 if an existing row is set to its current\nvalues. If you specify the CLIENT_FOUND_ROWS flag, the affected-rows\nvalue is 1 (not 0) if an existing row is set to its current values.\n\nThe ROW_COUNT() value is similar to the value from the\nmysql_affected_rows() C API function and the row count that the mysql\nclient displays following statement execution.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> INSERT INTO t VALUES(1),(2),(3);\nQuery OK, 3 rows affected (0.00 sec)\nRecords: 3  Duplicates: 0  Warnings: 0\n\nmysql> SELECT ROW_COUNT();\n+-------------+\n| ROW_COUNT() |\n+-------------+\n|           3 |\n+-------------+\n1 row in set (0.00 sec)\n\nmysql> DELETE FROM t WHERE i IN(1,2);\nQuery OK, 2 rows affected (0.00 sec)\n\nmysql> SELECT ROW_COUNT();\n+-------------+\n| ROW_COUNT() |\n+-------------+\n|           2 |\n+-------------+\n1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/8.0/en/information-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (424,8,'MBRCOVEREDBY','MBRCoveredBy(g1, g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangle of g1\nis covered by the minimum bounding rectangle of g2. This tests the\nopposite relationship as MBRCovers().\n\nMBRCoveredBy() handles its arguments as described in the introduction\nto this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html\n\n','mysql> SET @g1 = ST_GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = ST_GeomFromText(\'Point(1 1)\');\nmysql> SELECT MBRCovers(@g1,@g2), MBRCoveredby(@g1,@g2);\n+--------------------+-----------------------+\n| MBRCovers(@g1,@g2) | MBRCoveredby(@g1,@g2) |\n+--------------------+-----------------------+\n|                  1 |                     0 |\n+--------------------+-----------------------+\nmysql> SELECT MBRCovers(@g2,@g1), MBRCoveredby(@g2,@g1);\n+--------------------+-----------------------+\n| MBRCovers(@g2,@g1) | MBRCoveredby(@g2,@g1) |\n+--------------------+-----------------------+\n|                  0 |                     1 |\n+--------------------+-----------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (425,4,'SIGN','Syntax:\nSIGN(X)\n\nReturns the sign of the argument as -1, 0, or 1, depending on whether X\nis negative, zero, or positive.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT SIGN(-32);\n        -> -1\nmysql> SELECT SIGN(0);\n        -> 0\nmysql> SELECT SIGN(234);\n        -> 1\n','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (426,24,'FLOAT','FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]\n\nA small (single-precision) floating-point number. Permissible values\nare -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to\n3.402823466E+38. These are the theoretical limits, based on the IEEE\nstandard. The actual range might be slightly smaller depending on your\nhardware or operating system.\n\nM is the total number of digits and D is the number of digits following\nthe decimal point. If M and D are omitted, values are stored to the\nlimits permitted by the hardware. A single-precision floating-point\nnumber is accurate to approximately 7 decimal places.\n\nUNSIGNED, if specified, disallows negative values.\n\nUsing FLOAT might give you some unexpected problems because all\ncalculations in MySQL are done with double precision. See\nhttp://dev.mysql.com/doc/refman/8.0/en/no-matching-rows.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (427,17,'RANK','RANK() over_clause\n\nReturns the rank of the current row within its partition, with gaps.\nPeers are considered ties and receive the same rank. This function does\nnot assign consecutive ranks to peer groups if groups of size greater\nthan one exist; the result is noncontiguous rank numbers.\n\nThis function should be used with ORDER BY to sort partition rows into\nthe desired order. Without ORDER BY, all rows are peers.\n\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','mysql> SELECT\n         val,\n         ROW_NUMBER() OVER w AS \'row_number\',\n         RANK()       OVER w AS \'rank\',\n         DENSE_RANK() OVER w AS \'dense_rank\'\n       FROM numbers\n       WINDOW w AS (ORDER BY val);\n+------+------------+------+------------+\n| val  | row_number | rank | dense_rank |\n+------+------------+------+------------+\n|    1 |          1 |    1 |          1 |\n|    1 |          2 |    1 |          1 |\n|    2 |          3 |    3 |          2 |\n|    3 |          4 |    4 |          3 |\n|    3 |          5 |    4 |          3 |\n|    3 |          6 |    4 |          3 |\n|    4 |          7 |    7 |          4 |\n|    4 |          8 |    7 |          4 |\n|    5 |          9 |    9 |          5 |\n+------+------------+------+------------+\n','http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (428,18,'CHARSET','Syntax:\nCHARSET(str)\n\nReturns the character set of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> SELECT CHARSET(\'abc\');\n        -> \'utf8\'\nmysql> SELECT CHARSET(CONVERT(\'abc\' USING latin1));\n        -> \'latin1\'\nmysql> SELECT CHARSET(USER());\n        -> \'utf8\'\n','http://dev.mysql.com/doc/refman/8.0/en/information-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (429,33,'SUBDATE','Syntax:\nSUBDATE(date,INTERVAL expr unit), SUBDATE(expr,days)\n\nWhen invoked with the INTERVAL form of the second argument, SUBDATE()\nis a synonym for DATE_SUB(). For information on the INTERVAL unit\nargument, see the discussion for DATE_ADD().\n\nmysql> SELECT DATE_SUB(\'2008-01-02\', INTERVAL 31 DAY);\n        -> \'2007-12-02\'\nmysql> SELECT SUBDATE(\'2008-01-02\', INTERVAL 31 DAY);\n        -> \'2007-12-02\'\n\nThe second form enables the use of an integer value for days. In such\ncases, it is interpreted as the number of days to be subtracted from\nthe date or datetime expression expr.\n\nmysql> SELECT SUBDATE(\'2008-01-02 12:00:00\', 31);\n        -> \'2007-12-02 12:00:00\'\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (430,8,'JSON_CONTAINS','Syntax:\nJSON_CONTAINS(target, candidate[, path])\n\nIndicates by returning 1 or 0 whether a given candidate JSON document\nis contained within a target JSON document, or---if a path argument was\nsupplied---whether the candidate is found at a specific path within the\ntarget. Returns NULL if any argument is NULL, or if the path argument\ndoes not identify a section of the target document. An error occurs if\ntarget or candidate is not a valid JSON document, or if the path\nargument is not a valid path expression or contains a * or ** wildcard.\n\nTo check only whether any data exists at the path, use\nJSON_CONTAINS_PATH() instead.\n\nThe following rules define containment:\n\no A candidate scalar is contained in a target scalar if and only if\n  they are comparable and are equal. Two scalar values are comparable\n  if they have the same JSON_TYPE() types, with the exception that\n  values of types INTEGER and DECIMAL are also comparable to each\n  other.\n\no A candidate array is contained in a target array if and only if every\n  element in the candidate is contained in some element of the target.\n\no A candidate nonarray is contained in a target array if and only if\n  the candidate is contained in some element of the target.\n\no A candidate object is contained in a target object if and only if for\n  each key in the candidate there is a key with the same name in the\n  target and the value associated with the candidate key is contained\n  in the value associated with the target key.\n\nOtherwise, the candidate value is not contained in the target document.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SET @j = \'{"a": 1, "b": 2, "c": {"d": 4}}\';\nmysql> SET @j2 = \'1\';\nmysql> SELECT JSON_CONTAINS(@j, @j2, \'$.a\');\n+-------------------------------+\n| JSON_CONTAINS(@j, @j2, \'$.a\') |\n+-------------------------------+\n|                             1 |\n+-------------------------------+\nmysql> SELECT JSON_CONTAINS(@j, @j2, \'$.b\');\n+-------------------------------+\n| JSON_CONTAINS(@j, @j2, \'$.b\') |\n+-------------------------------+\n|                             0 |\n+-------------------------------+\n\nmysql> SET @j2 = \'{"d": 4}\';\nmysql> SELECT JSON_CONTAINS(@j, @j2, \'$.a\');\n+-------------------------------+\n| JSON_CONTAINS(@j, @j2, \'$.a\') |\n+-------------------------------+\n|                             0 |\n+-------------------------------+\nmysql> SELECT JSON_CONTAINS(@j, @j2, \'$.c\');\n+-------------------------------+\n| JSON_CONTAINS(@j, @j2, \'$.c\') |\n+-------------------------------+\n|                             1 |\n+-------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (431,33,'DAYOFYEAR','Syntax:\nDAYOFYEAR(date)\n\nReturns the day of the year for date, in the range 1 to 366.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFYEAR(\'2007-02-03\');\n        -> 34\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (432,4,'%','Syntax:\nN % M, N MOD M\n\nModulo operation. Returns the remainder of N divided by M. For more\ninformation, see the description for the MOD() function in\nhttp://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (433,17,'NTH_VALUE','NTH_VALUE(expr, N) [from_first_last] [null_treatment] over_clause\n\nReturns the value of expr from the N-th row of the window frame. If\nthere is no such row, the return value is NULL.\n\nN must be a literal positive integer.\n\nfrom_first_last is part of the SQL standard, but the MySQL\nimplementation permits only FROM FIRST (which is also the default).\nThis means that calculations begin at the first row of the window. FROM\nLAST is parsed, but produces an error. To obtain the same effect as\nFROM LAST (begin calculations at the last row of the window), use ORDER\nBY to sort in reverse order.\n\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\nnull_treatment is as described in the section introduction.\n\nFor an example, see the FIRST_VALUE() function description.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (434,25,'DECLARE CONDITION','Syntax:\nDECLARE condition_name CONDITION FOR condition_value\n\ncondition_value:\n    mysql_error_code\n  | SQLSTATE [VALUE] sqlstate_value\n\nThe DECLARE ... CONDITION statement declares a named error condition,\nassociating a name with a condition that needs specific handling. The\nname can be referred to in a subsequent DECLARE ... HANDLER statement\n(see [HELP DECLARE HANDLER]).\n\nCondition declarations must appear before cursor or handler\ndeclarations.\n\nThe condition_value for DECLARE ... CONDITION indicates the specific\ncondition or class of conditions to associate with the condition name.\nIt can take the following forms:\n\no mysql_error_code: An integer literal indicating a MySQL error code.\n\n  Do not use MySQL error code 0 because that indicates success rather\n  than an error condition. For a list of MySQL error codes, see\n  http://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html.\n\no SQLSTATE [VALUE] sqlstate_value: A 5-character string literal\n  indicating an SQLSTATE value.\n\n  Do not use SQLSTATE values that begin with \'00\' because those\n  indicate success rather than an error condition. For a list of\n  SQLSTATE values, see\n  http://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html.\n\nCondition names referred to in SIGNAL or use RESIGNAL statements must\nbe associated with SQLSTATE values, not MySQL error codes.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/declare-condition.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/declare-condition.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (435,33,'MONTHNAME','Syntax:\nMONTHNAME(date)\n\nReturns the full name of the month for date. The language used for the\nname is controlled by the value of the lc_time_names system variable\n(http://dev.mysql.com/doc/refman/8.0/en/locale-support.html).\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT MONTHNAME(\'2008-02-03\');\n        -> \'February\'\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (436,9,'CHANGE MASTER TO','Syntax:\nCHANGE MASTER TO option [, option] ... [ channel_option ]\n\noption:\n    MASTER_BIND = \'interface_name\'\n  | MASTER_HOST = \'host_name\'\n  | MASTER_USER = \'user_name\'\n  | MASTER_PASSWORD = \'password\'\n  | MASTER_PORT = port_num\n  | MASTER_CONNECT_RETRY = interval\n  | MASTER_RETRY_COUNT = count\n  | MASTER_DELAY = interval\n  | MASTER_HEARTBEAT_PERIOD = interval\n  | MASTER_LOG_FILE = \'master_log_name\'\n  | MASTER_LOG_POS = master_log_pos\n  | MASTER_AUTO_POSITION = {0|1}\n  | RELAY_LOG_FILE = \'relay_log_name\'\n  | RELAY_LOG_POS = relay_log_pos\n  | MASTER_SSL = {0|1}\n  | MASTER_SSL_CA = \'ca_file_name\'\n  | MASTER_SSL_CAPATH = \'ca_directory_name\'\n  | MASTER_SSL_CERT = \'cert_file_name\'\n  | MASTER_SSL_CRL = \'crl_file_name\'\n  | MASTER_SSL_CRLPATH = \'crl_directory_name\'\n  | MASTER_SSL_KEY = \'key_file_name\'\n  | MASTER_SSL_CIPHER = \'cipher_list\'\n  | MASTER_SSL_VERIFY_SERVER_CERT = {0|1}\n  | MASTER_TLS_VERSION = \'protocol_list\'\n  | MASTER_PUBLIC_KEY_PATH = \'key_file_name\'\n  | GET_MASTER_PUBLIC_KEY = {0|1}\n  | IGNORE_SERVER_IDS = (server_id_list)\n\nchannel_option:\n    FOR CHANNEL channel\n\nserver_id_list:\n    [server_id [, server_id] ... ]\n\nCHANGE MASTER TO changes the parameters that the slave server uses for\nconnecting to the master server, for reading the master binary log, and\nreading the slave relay log. It also updates the contents of the master\ninfo and relay log info repositories (see\nhttp://dev.mysql.com/doc/refman/8.0/en/slave-logs.html). CHANGE MASTER\nTO requires the REPLICATION_SLAVE_ADMIN or SUPER privilege.\n\nYou can issue CHANGE MASTER TO statements on a running slave without\nfirst stopping it, depending on the states of the slave SQL thread and\nslave I/O thread. The rules governing such use are provided later in\nthis section.\n\nWhen using a multi-threaded slave (in other words\nslave_parallel_workers is greater than 0), stopping the slave can cause\n"gaps" in the sequence of transactions that have been executed from the\nrelay log, regardless of whether the slave was stopped intentionally or\notherwise. When such gaps exist, issuing CHANGE MASTER TO fails. The\nsolution in this situation is to issue START SLAVE UNTIL\nSQL_AFTER_MTS_GAPS which ensures that the gaps are closed.\n\nThe optional FOR CHANNEL channel clause enables you to name which\nreplication channel the statement applies to. Providing a FOR CHANNEL\nchannel clause applies the CHANGE MASTER TO statement to a specific\nreplication channel, and is used to add a new channel or modify an\nexisting channel. For example, to add a new channel called channel2:\n\nCHANGE MASTER TO MASTER_HOST=host1, MASTER_PORT=3002 FOR CHANNEL \'channel2\'\n\nIf no clause is named and no extra channels exist, the statement\napplies to the default channel.\n\nWhen using multiple replication channels, if a CHANGE MASTER TO\nstatement does not name a channel using a FOR CHANNEL channel clause,\nan error occurs. See\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-channels.html for\nmore information.\n\nOptions not specified retain their value, except as indicated in the\nfollowing discussion. Thus, in most cases, there is no need to specify\noptions that do not change.\n\nMASTER_HOST, MASTER_USER, MASTER_PASSWORD, and MASTER_PORT provide\ninformation to the slave about how to connect to its master:\n\no MASTER_HOST and MASTER_PORT are the host name (or IP address) of the\n  master host and its TCP/IP port.\n\n  *Note*:\n\n  Replication cannot use Unix socket files. You must be able to connect\n  to the master MySQL server using TCP/IP.\n\n  If you specify the MASTER_HOST or MASTER_PORT option, the slave\n  assumes that the master server is different from before (even if the\n  option value is the same as its current value.) In this case, the old\n  values for the master binary log file name and position are\n  considered no longer applicable, so if you do not specify\n  MASTER_LOG_FILE and MASTER_LOG_POS in the statement,\n  MASTER_LOG_FILE=\'\' and MASTER_LOG_POS=4 are silently appended to it.\n\n  Setting MASTER_HOST=\'\' (that is, setting its value explicitly to an\n  empty string) is not the same as not setting MASTER_HOST at all.\n  Trying to set MASTER_HOST to an empty string fails with an error.\n\n  Values used for MASTER_HOST and other CHANGE MASTER TO options are\n  checked for linefeed (\\n or 0x0A) characters; the presence of such\n  characters in these values causes the statement to fail with\n  ER_MASTER_INFO. (Bug #11758581, Bug #50801)\n\no MASTER_USER and MASTER_PASSWORD are the user name and password of the\n  account to use for connecting to the master.\n\n  MASTER_USER cannot be made empty; setting MASTER_USER = \'\' or leaving\n  it unset when setting a value for MASTER_PASSWORD causes an error\n  (Bug #13427949).\n\n  The password used for a MySQL Replication slave account in a CHANGE\n  MASTER TO statement is limited to 32 characters in length; trying to\n  use a password of more than 32 characters causes CHANGE MASTER TO to\n  fail.\n\n  The text of a running CHANGE MASTER TO statement, including values\n  for MASTER_USER and MASTER_PASSWORD, can be seen in the output of a\n  concurrent SHOW PROCESSLIST statement. (The complete text of a START\n  SLAVE statement is also visible to SHOW PROCESSLIST.)\n\nThe MASTER_SSL_xxx options provide information about using SSL for the\nconnection. They correspond to the --ssl-xxx options described in\nhttp://dev.mysql.com/doc/refman/8.0/en/encrypted-connection-options.htm\nl, and\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-solutions-encrypted-\nconnections.html. These options can be changed even on slaves that are\ncompiled without SSL support. They are saved to the master info\nrepository, but are ignored if the slave does not have SSL support\nenabled.\n\nThe MASTER_SSL=1 is prescriptive, not advisory. When given, the slave\nconnection to the master must use SSL or the connection attempt fails.\n\nThe MASTER_TLS_VERSION option specifies the encryption protocols\npermitted by the master for slave connections. The value is like that\nfor the tls_version system variable: A comma-separated list containing\none or more protocol names. The protocols that can be named for this\noption depend on the SSL library used to compile MySQL. For details,\nsee\nhttp://dev.mysql.com/doc/refman/8.0/en/encrypted-connection-protocols-c\niphers.html.\n\nTwo options apply to the use of RSA key pair-based password exchange,\nwhich requires the slave to know the RSA public key:\n\no MASTER_PUBLIC_KEY_PATH indicates the path name to a file containing a\n  slave-side copy of the public key required by the master for RSA key\n  pair-based password exchange. The file must be in PEM format. This\n  option applies to slaves that authenticate with the sha256_password\n  or caching_sha2_password authentication plugin. (For sha256_password,\n  MASTER_PUBLIC_KEY_PATH can be used only if MySQL was built using\n  OpenSSL.)\n\no GET_MASTER_PUBLIC_KEY indicates whether to request from the master\n  the public key required for RSA key pair-based password exchange.\n  This option applies to slaves that authenticate with the\n  caching_sha2_password authentication plugin. For that plugin, the\n  master does not send the public key unless requested.\n\nIf MASTER_PUBLIC_KEY_PATH is given and specifies a valid public key\nfile, it takes precedence over GET_MASTER_PUBLIC_KEY.\n\nMASTER_CONNECT_RETRY specifies how many seconds to wait between connect\nretries. The default is 60.\n\nMASTER_RETRY_COUNT limits the number of reconnection attempts and\nupdates the value of the Master_Retry_Count column in the output of\nSHOW SLAVE STATUS. The default value is 24 * 3600 = 86400.\nMASTER_RETRY_COUNT is intended to replace the older\n--master-retry-count server option, and is now the preferred method for\nsetting this limit. You are encouraged not to rely on\n--master-retry-count in new applications and, when upgrading from\nversions earlier than MySQL 5.6, to update any existing applications\nthat rely on it, so that they use CHANGE MASTER TO ...\nMASTER_RETRY_COUNT instead.\n\nMASTER_DELAY specifies how many seconds behind the master the slave\nmust lag. An event received from the master is not executed until at\nleast interval seconds later than its execution on the master. The\ndefault is 0. An error occurs if interval is not a nonnegative integer\nin the range from 0 to 231−1. For more information, see\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-delayed.html.\n\nA CHANGE MASTER TO statement employing the MASTER_DELAY option can be\nexecuted on a running slave when the slave SQL thread is stopped.\n\nMASTER_BIND is for use on replication slaves having multiple network\ninterfaces, and determines which of the slave\'s network interfaces is\nchosen for connecting to the master.\n\nThe address configured with this option, if any, can be seen in the\nMaster_Bind column of the output from SHOW SLAVE STATUS. In the master\ninfo repository table mysql.slave_master_info, the value can be seen as\nthe Master_bind column.\n\nMASTER_HEARTBEAT_PERIOD sets the interval in seconds between\nreplication heartbeats. Whenever the master\'s binary log is updated\nwith an event, the waiting period for the next heartbeat is reset.\ninterval is a decimal value having the range 0 to 4294967 seconds and a\nresolution in milliseconds; the smallest nonzero value is 0.001.\nHeartbeats are sent by the master only if there are no unsent events in\nthe binary log file for a period longer than interval.\nMASTER_HEARTBEAT_PERIOD can be seen as the value of the Heartbeat\ncolumn of the mysql.slave_master_info table.\n\nSetting interval to 0 disables heartbeats altogether. The default value\nfor interval is equal to the value of slave_net_timeout divided by 2.\n\nSetting @@global.slave_net_timeout to a value less than that of the\ncurrent heartbeat interval results in a warning being issued. The\neffect of issuing RESET SLAVE on the heartbeat interval is to reset it\nto the default value.\n\nMASTER_LOG_FILE and MASTER_LOG_POS are the coordinates at which the\nslave I/O thread should begin reading from the master the next time the\nthread starts. RELAY_LOG_FILE and RELAY_LOG_POS are the coordinates at\nwhich the slave SQL thread should begin reading from the relay log the\nnext time the thread starts. If you specify either of MASTER_LOG_FILE\nor MASTER_LOG_POS, you cannot specify RELAY_LOG_FILE or RELAY_LOG_POS.\nIf you specify either of MASTER_LOG_FILE or MASTER_LOG_POS, you also\ncannot specify MASTER_AUTO_POSITION = 1 (described later in this\nsection). If neither of MASTER_LOG_FILE or MASTER_LOG_POS is specified,\nthe slave uses the last coordinates of the slave SQL thread before\nCHANGE MASTER TO was issued. This ensures that there is no\ndiscontinuity in replication, even if the slave SQL thread was late\ncompared to the slave I/O thread, when you merely want to change, say,\nthe password to use.\n\nA CHANGE MASTER TO statement employing RELAY_LOG_FILE, RELAY_LOG_POS,\nor both options can be executed on a running slave when the slave SQL\nthread is stopped.\n\nIf MASTER_AUTO_POSITION = 1 is used with CHANGE MASTER TO, the slave\nattempts to connect to the master using the GTID-based replication\nprotocol. This option can be employed by CHANGE MASTER TO only if both\nthe slave SQL and slave I/O threads are stopped.\n\nWhen using GTIDs, the slave tells the master which transactions it has\nalready received, executed, or both. To compute this set, it reads the\nglobal value of gtid_executed and the value of the Retrieved_gtid_set\ncolumn from SHOW SLAVE STATUS. Since the GTID of the last transmitted\ntransaction is included in Retrieved_gtid_set even if the transaction\nwas only partially transmitted, the last received GTID is subtracted\nfrom this set. Thus, the slave computes the following set:\n\nUNION(@@global.gtid_executed, Retrieved_gtid_set - last_received_GTID)\n\nThis set is sent to the master as part of the initial handshake, and\nthe master sends back all transactions that it has executed which are\nnot part of the set. If any of these transactions have been already\npurged from the master\'s binary log, the master sends the error\nER_MASTER_HAS_PURGED_REQUIRED_GTIDS to the slave, and replication does\nnot start.\n\nWhen GTID-based replication is employed, the coordinates represented by\nMASTER_LOG_FILE and MASTER_LOG_POS are not used, and global transaction\nidentifiers are used instead. Thus the use of either or both of these\noptions together with MASTER_AUTO_POSITION causes an error.\n\nYou can see whether replication is running with autopositioning enabled\nby checking the output of SHOW SLAVE STATUS.\n\ngtid_mode must also be enabled before issuing CHANGE MASTER TO ...\nMASTER_AUTO_POSITION = 1. Otherwise, the statement fails with an error.\n\nTo revert to the older file-based replication protocol after using\nGTIDs, you can issue a new CHANGE MASTER TO statement that specifies\nMASTER_AUTO_POSITION = 0, as well as at least one of MASTER_LOG_FILE or\nMASTER_LOG_POSITION.\n\nRelay logs are preserved if at least one of the slave SQL thread and\nthe slave I/O thread is running; if both threads are stopped, all relay\nlog files are deleted unless at least one of RELAY_LOG_FILE or\nRELAY_LOG_POS is specified.\n\nRELAY_LOG_FILE can use either an absolute or relative path, and uses\nthe same base name as MASTER_LOG_FILE. (Bug #12190)\n\nIGNORE_SERVER_IDS takes a comma-separated list of 0 or more server IDs.\nEvents originating from the corresponding servers are ignored, with the\nexception of log rotation and deletion events, which are still recorded\nin the relay log.\n\nIn circular replication, the originating server normally acts as the\nterminator of its own events, so that they are not applied more than\nonce. Thus, this option is useful in circular replication when one of\nthe servers in the circle is removed. Suppose that you have a circular\nreplication setup with 4 servers, having server IDs 1, 2, 3, and 4, and\nserver 3 fails. When bridging the gap by starting replication from\nserver 2 to server 4, you can include IGNORE_SERVER_IDS = (3) in the\nCHANGE MASTER TO statement that you issue on server 4 to tell it to use\nserver 2 as its master instead of server 3. Doing so causes it to\nignore and not to propagate any statements that originated with the\nserver that is no longer in use.\n\nIf IGNORE_SERVER_IDS contains the server\'s own ID and the server was\nstarted with the --replicate-same-server-id option enabled, an error\nresults.\n\n*Note*:\n\nWhen global transaction identifiers (GTIDs) are used for replication,\ntransactions that have already been applied are automatically ignored,\nso the IGNORE_SERVER_IDS function is not required and is deprecated. If\ngtid_mode=ON is set for the server, a deprecation warning is issued if\nyou include the IGNORE_SERVER_IDS option in a CHANGE MASTER TO\nstatement.\n\nThe master info repository and the output of SHOW SLAVE STATUS provide\nthe list of servers that are currently ignored. For more information,\nsee http://dev.mysql.com/doc/refman/8.0/en/slave-logs-status.html, and\n[HELP SHOW SLAVE STATUS].\n\nIf a CHANGE MASTER TO statement is issued without any IGNORE_SERVER_IDS\noption, any existing list is preserved. To clear the list of ignored\nservers, it is necessary to use the option with an empty list:\n\nCHANGE MASTER TO IGNORE_SERVER_IDS = ();\n\nRESET SLAVE ALL clears IGNORE_SERVER_IDS.\n\n*Note*:\n\nA deprecation warning is issued if SET GTID_MODE=ON is issued when any\nchannel has existing server IDs set with IGNORE_SERVER_IDS. Before\nstarting GTID-based replication, check for and clear all ignored server\nID lists on the servers involved. The SHOW_SLAVE_STATUS statement\ndisplays the list of ignored IDs, if there is one. If you do receive\nthe deprecation warning, you can still clear a list after gtid_mode=ON\nis set by issuing a CHANGE MASTER TO statement containing the\nIGNORE_SERVER_IDS option with an empty list.\n\nInvoking CHANGE MASTER TO causes the previous values for MASTER_HOST,\nMASTER_PORT, MASTER_LOG_FILE, and MASTER_LOG_POS to be written to the\nerror log, along with other information about the slave\'s state prior\nto execution.\n\nCHANGE MASTER TO causes an implicit commit of an ongoing transaction.\nSee http://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\nFrom MySQL 5.7, the strict requirement to execute STOP SLAVE prior to\nissuing any CHANGE MASTER TO statement (and START SLAVE afterward) is\nremoved. Instead of depending on whether the slave is stopped, the\nbehavior of CHANGE MASTER TO depends on the states of the slave SQL\nthread and slave I/O threads; which of these threads is stopped or\nrunning now determines the options that can or cannot be used with a\nCHANGE MASTER TO statement at a given point in time. The rules for\nmaking this determination are listed here:\n\no If the SQL thread is stopped, you can execute CHANGE MASTER TO using\n  any combination that is otherwise allowed of RELAY_LOG_FILE,\n  RELAY_LOG_POS, and MASTER_DELAY options, even if the slave I/O thread\n  is running. No other options may be used with this statement when the\n  I/O thread is running.\n\no If the I/O thread is stopped, you can execute CHANGE MASTER TO using\n  any of the options for this statement (in any allowed combination)\n  except RELAY_LOG_FILE, RELAY_LOG_POS, or MASTER_DELAY, even when the\n  SQL thread is running. These three options may not be used when the\n  I/O thread is running.\n\no Both the SQL thread and the I/O thread must be stopped before issuing\n  a CHANGE MASTER TO statement that employs MASTER_AUTO_POSITION = 1.\n\nYou can check the current state of the slave SQL and I/O threads using\nSHOW SLAVE STATUS.\n\nFor more information, see\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-solutions-switch.htm\nl.\n\nIf you are using statement-based replication and temporary tables, it\nis possible for a CHANGE MASTER TO statement following a STOP SLAVE\nstatement to leave behind temporary tables on the slave. A warning\n(ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO) is now issued whenever this\noccurs. You can avoid this in such cases by making sure that the value\nof the Slave_open_temp_tables system status variable is equal to 0\nprior to executing such a CHANGE MASTER TO statement.\n\nCHANGE MASTER TO is useful for setting up a slave when you have the\nsnapshot of the master and have recorded the master binary log\ncoordinates corresponding to the time of the snapshot. After loading\nthe snapshot into the slave to synchronize it with the master, you can\nrun CHANGE MASTER TO MASTER_LOG_FILE=\'log_name\', MASTER_LOG_POS=log_pos\non the slave to specify the coordinates at which the slave should begin\nreading the master binary log.\n\nThe following example changes the master server the slave uses and\nestablishes the master binary log coordinates from which the slave\nbegins reading. This is used when you want to set up the slave to\nreplicate the master:\n\nCHANGE MASTER TO\n  MASTER_HOST=\'master2.example.com\',\n  MASTER_USER=\'replication\',\n  MASTER_PASSWORD=\'password\',\n  MASTER_PORT=3306,\n  MASTER_LOG_FILE=\'master2-bin.001\',\n  MASTER_LOG_POS=4,\n  MASTER_CONNECT_RETRY=10;\n\nThe next example shows an operation that is less frequently employed.\nIt is used when the slave has relay log files that you want it to\nexecute again for some reason. To do this, the master need not be\nreachable. You need only use CHANGE MASTER TO and start the SQL thread\n(START SLAVE SQL_THREAD):\n\nCHANGE MASTER TO\n  RELAY_LOG_FILE=\'slave-relay-bin.006\',\n  RELAY_LOG_POS=4025;\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/change-master-to.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/change-master-to.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (437,33,'TIMESTAMP FUNCTION','Syntax:\nTIMESTAMP(expr), TIMESTAMP(expr1,expr2)\n\nWith a single argument, this function returns the date or datetime\nexpression expr as a datetime value. With two arguments, it adds the\ntime expression expr2 to the date or datetime expression expr1 and\nreturns the result as a datetime value.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMP(\'2003-12-31\');\n        -> \'2003-12-31 00:00:00\'\nmysql> SELECT TIMESTAMP(\'2003-12-31 12:00:00\',\'12:00:00\');\n        -> \'2004-01-01 00:00:00\'\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (438,15,'INTERNAL_DD_CHAR_LENGTH','INTERNAL_DD_CHAR_LENGTH(ARGS)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (439,40,'DROP DATABASE','Syntax:\nDROP {DATABASE | SCHEMA} [IF EXISTS] db_name\n\nDROP DATABASE drops all tables in the database and deletes the\ndatabase. Be very careful with this statement! To use DROP DATABASE,\nyou need the DROP privilege on the database. DROP SCHEMA is a synonym\nfor DROP DATABASE.\n\n*Important*:\n\nWhen a database is dropped, privileges granted specifically for the\ndatabase are not automatically dropped. They must be dropped manually.\nSee [HELP GRANT].\n\nIF EXISTS is used to prevent an error from occurring if the database\ndoes not exist.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/drop-database.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/drop-database.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (440,28,'SHOW GRANTS','Syntax:\nSHOW GRANTS\n    [FOR user_or_role\n        [USING role [, role] ...]]\n\nuser_or_role: {\n    user\n  | role\n}\n\nThis statement displays the privileges and roles that are assigned to a\nMySQL user account or role, in the form of GRANT statements that must\nbe executed to duplicate the privilege and role assignments.\n\n*Note*:\n\nTo display nonprivilege information for MySQL accounts, use the SHOW\nCREATE USER statement. See [HELP SHOW CREATE USER].\n\nSHOW GRANTS requires the SELECT privilege for the mysql database,\nexcept to display privileges and roles for the current user.\n\nTo name the account or role for SHOW GRANTS, use the same format as for\nthe GRANT statement; for example, \'jeffrey\'@\'localhost\':\n\nmysql> SHOW GRANTS FOR \'jeffrey\'@\'localhost\';\n+------------------------------------------------------------------+\n| Grants for jeffrey@localhost                                     |\n+------------------------------------------------------------------+\n| GRANT USAGE ON *.* TO `jeffrey`@`localhost`                      |\n| GRANT SELECT, INSERT, UPDATE ON `db1`.* TO `jeffrey`@`localhost` |\n+------------------------------------------------------------------+\n\nThe host part, if omitted, defaults to \'%\'. For additional information\nabout specifying account and role names, see\nhttp://dev.mysql.com/doc/refman/8.0/en/account-names.html, and\nhttp://dev.mysql.com/doc/refman/8.0/en/role-names.html.\n\nTo display the privileges granted to the current user (the account you\nare using to connect to the server), you can use any of the following\nstatements:\n\nSHOW GRANTS;\nSHOW GRANTS FOR CURRENT_USER;\nSHOW GRANTS FOR CURRENT_USER();\n\nIf SHOW GRANTS FOR CURRENT_USER (or any of the equivalent syntaxes) is\nused in definer context, such as within a stored procedure that\nexecutes with definer rather than invoker privileges), the grants\ndisplayed are those of the definer and not the invoker.\n\nIn MySQL 8.0 compared to previous series, SHOW GRANTS no longer\ndisplays ALL PRIVILEGES in its global-privileges output because the\nmeaning of ALL PRIVILEGES at the global level varies depending on which\ndynamic privileges are defined. Instead, SHOW GRANTS explictly lists\neach granted global privilege:\n\nmysql> SHOW GRANTS FOR \'root\'@\'localhost\';\n+---------------------------------------------------------------------+\n| Grants for root@localhost                                           |\n+---------------------------------------------------------------------+\n| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD,         |\n| SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES,  |\n| SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION   |\n| SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE,  |\n| ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE,      |\n| CREATE ROLE, DROP ROLE ON *.* TO `root`@`localhost` WITH GRANT      |\n| OPTION                                                              |\n| GRANT PROXY ON \'\'@\'\' TO \'root\'@\'localhost\' WITH GRANT OPTION        |\n+---------------------------------------------------------------------+\n\nApplications that process SHOW GRANTS output should be adjusted\naccordingly.\n\nAt the global level, GRANT OPTION applies to all granted static global\nprivileges if granted for any of them, but applies individually to\ngranted dynamic privileges. SHOW GRANTS displays global privileges this\nway:\n\no One line listing all granted static privileges, if there are any,\n  including WITH GRANT OPTION if appropriate.\n\no One line listing all granted dynamic privileges for which GRANT\n  OPTION is granted, if there are any, including WITH GRANT OPTION.\n\no One line listing all granted dynamic privileges for which GRANT\n  OPTION is not granted, if there are any, without WITH GRANT OPTION.\n\nWith the optional USING clause, SHOW GRANTS enables you to examine the\nprivileges associated with roles for the user. Each role named in the\nUSING clause must be granted to the user.\n\nSuppose that user u1 is assigned roles r1 and r2, as follows:\n\nCREATE ROLE \'r1\', \'r2\';\nGRANT SELECT ON db1.* TO \'r1\';\nGRANT INSERT, UPDATE, DELETE ON db1.* TO \'r2\';\nCREATE USER \'u1\'@\'localhost\' IDENTIFIED BY \'u1pass\';\nGRANT \'r1\', \'r2\' TO \'u1\'@\'localhost\';\n\nSHOW GRANTS without USING shows the granted roles:\n\nmysql> SHOW GRANTS FOR \'u1\'@\'localhost\';\n+---------------------------------------------+\n| Grants for u1@localhost                     |\n+---------------------------------------------+\n| GRANT USAGE ON *.* TO `u1`@`localhost`      |\n| GRANT `r1`@`%`,`r2`@`%` TO `u1`@`localhost` |\n+---------------------------------------------+\n\nAdding a USING clause causes the statement to also display the\nprivileges associated with each role named in the clause:\n\nmysql> SHOW GRANTS FOR \'u1\'@\'localhost\' USING \'r1\';\n+---------------------------------------------+\n| Grants for u1@localhost                     |\n+---------------------------------------------+\n| GRANT USAGE ON *.* TO `u1`@`localhost`      |\n| GRANT SELECT ON `db1`.* TO `u1`@`localhost` |\n| GRANT `r1`@`%`,`r2`@`%` TO `u1`@`localhost` |\n+---------------------------------------------+\nmysql> SHOW GRANTS FOR \'u1\'@\'localhost\' USING \'r2\';\n+-------------------------------------------------------------+\n| Grants for u1@localhost                                     |\n+-------------------------------------------------------------+\n| GRANT USAGE ON *.* TO `u1`@`localhost`                      |\n| GRANT INSERT, UPDATE, DELETE ON `db1`.* TO `u1`@`localhost` |\n| GRANT `r1`@`%`,`r2`@`%` TO `u1`@`localhost`                 |\n+-------------------------------------------------------------+\nmysql> SHOW GRANTS FOR \'u1\'@\'localhost\' USING \'r1\', \'r2\';\n+---------------------------------------------------------------------+\n| Grants for u1@localhost                                             |\n+---------------------------------------------------------------------+\n| GRANT USAGE ON *.* TO `u1`@`localhost`                              |\n| GRANT SELECT, INSERT, UPDATE, DELETE ON `db1`.* TO `u1`@`localhost` |\n| GRANT `r1`@`%`,`r2`@`%` TO `u1`@`localhost`                         |\n+---------------------------------------------------------------------+\n\n*Note*:\n\nA privileges granted an an account is always in effect, but a role is\nnot. The active roles for an account can differ across and within\nsessions, depending on the value of the activate_all_roles_on_login\nsystem variable, the account default roles, and whether SET ROLE has\nbeen executed within a session.\n\nSHOW GRANTS does not display privileges that are available to the named\naccount but are granted to a different account. For example, if an\nanonymous account exists, the named account might be able to use its\nprivileges, but SHOW GRANTS does not display them.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-grants.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show-grants.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (441,9,'LOCK INSTANCE FOR BACKUP','Syntax:\nLOCK INSTANCE FOR BACKUP\n\nUNLOCK INSTANCE\n\nLOCK INSTANCE FOR BACKUP acquires an instance-level backup lock that\npermits DML during an online backup while preventing operations that\ncould result in an inconsistent snapshot.\n\nExecuting the LOCK INSTANCE FOR BACKUP statement requires the\nBACKUP_ADMIN privilege. The BACKUP_ADMIN privilege is automatically\ngranted to users with the RELOAD privilege when performing an in-place\nupgrade to MySQL 8.0 from an earlier version.\n\nMultiple sessions can hold a backup lock simultaneously.\n\nUNLOCK INSTANCE releases a backup lock held by the current session. A\nbackup lock held by a session is also released if the session is\nterminated.\n\nLOCK INSTANCE FOR BACKUP prevents files from being created, renamed, or\nremoved. REPAIR TABLE TRUNCATE TABLE, OPTIMIZE TABLE, and account\nmanagement statements are blocked. See\nhttp://dev.mysql.com/doc/refman/8.0/en/account-management-sql.html.\nOperations that modify InnoDB files that are not recorded in the InnoDB\nredo log are also blocked.\n\nLOCK INSTANCE FOR BACKUP permits DDL operations that only affect\nuser-created temporary tables. In effect, files that belong to\nuser-created temporary tables can be created, renamed, or removed while\na backup lock is held. Creation of binary log files is also permitted.\n\nA backup lock acquired by LOCK INSTANCE FOR BACKUP is independent of\ntransactional locks and locks taken by FLUSH TABLES tbl_name [,\ntbl_name] ... WITH READ LOCK, and the following sequences of statements\nare permitted:\n\nLOCK INSTANCE FOR BACKUP;\nFLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK;\nUNLOCK TABLES;\nUNLOCK INSTANCE;\n\nFLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK;\nLOCK INSTANCE FOR BACKUP;\nUNLOCK INSTANCE;\nUNLOCK TABLES;\n\nThe lock_wait_timeout setting defines the amount of time that a LOCK\nINSTANCE FOR BACKUP statement waits to acquire a lock before giving up.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/lock-instance-for-backup.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/lock-instance-for-backup.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (442,8,'JSON_CONTAINS_PATH','Syntax:\nJSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)\n\nReturns 0 or 1 to indicate whether a JSON document contains data at a\ngiven path or paths. Returns NULL if any argument is NULL. An error\noccurs if the json_doc argument is not a valid JSON document, any path\nargument is not a valid path expression, or one_or_all is not \'one\' or\n\'all\'.\n\nTo check for a specific value at a path, use JSON_CONTAINS() instead.\n\nThe return value is 0 if no specified path exists within the document.\nOtherwise, the return value depends on the one_or_all argument:\n\no \'one\': 1 if at least one path exists within the document, 0\n  otherwise.\n\no \'all\': 1 if all paths exist within the document, 0 otherwise.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SET @j = \'{"a": 1, "b": 2, "c": {"d": 4}}\';\nmysql> SELECT JSON_CONTAINS_PATH(@j, \'one\', \'$.a\', \'$.e\');\n+---------------------------------------------+\n| JSON_CONTAINS_PATH(@j, \'one\', \'$.a\', \'$.e\') |\n+---------------------------------------------+\n|                                           1 |\n+---------------------------------------------+\nmysql> SELECT JSON_CONTAINS_PATH(@j, \'all\', \'$.a\', \'$.e\');\n+---------------------------------------------+\n| JSON_CONTAINS_PATH(@j, \'all\', \'$.a\', \'$.e\') |\n+---------------------------------------------+\n|                                           0 |\n+---------------------------------------------+\nmysql> SELECT JSON_CONTAINS_PATH(@j, \'one\', \'$.c.d\');\n+----------------------------------------+\n| JSON_CONTAINS_PATH(@j, \'one\', \'$.c.d\') |\n+----------------------------------------+\n|                                      1 |\n+----------------------------------------+\nmysql> SELECT JSON_CONTAINS_PATH(@j, \'one\', \'$.a.d\');\n+----------------------------------------+\n| JSON_CONTAINS_PATH(@j, \'one\', \'$.a.d\') |\n+----------------------------------------+\n|                                      0 |\n+----------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (443,34,'ST_MPOINTFROMWKB','ST_MPointFromWKB(wkb[, srid [, options]]), ST_MultiPointFromWKB(wkb[,\nsrid [, options]])\n\nConstructs a MultiPoint value using its WKB representation and SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (444,4,'CRC32','Syntax:\nCRC32(expr)\n\nComputes a cyclic redundancy check value and returns a 32-bit unsigned\nvalue. The result is NULL if the argument is NULL. The argument is\nexpected to be a string and (if possible) is treated as one if it is\nnot.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT CRC32(\'MySQL\');\n        -> 3259397556\nmysql> SELECT CRC32(\'mysql\');\n        -> 2501908538\n','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (445,25,'DECLARE VARIABLE','Syntax:\nDECLARE var_name [, var_name] ... type [DEFAULT value]\n\nThis statement declares local variables within stored programs. To\nprovide a default value for a variable, include a DEFAULT clause. The\nvalue can be specified as an expression; it need not be a constant. If\nthe DEFAULT clause is missing, the initial value is NULL.\n\nLocal variables are treated like stored routine parameters with respect\nto data type and overflow checking. See [HELP CREATE PROCEDURE].\n\nVariable declarations must appear before cursor or handler\ndeclarations.\n\nLocal variable names are not case-sensitive. Permissible characters and\nquoting rules are the same as for other identifiers, as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/identifiers.html.\n\nThe scope of a local variable is the BEGIN ... END block within which\nit is declared. The variable can be referred to in blocks nested within\nthe declaring block, except those blocks that declare a variable with\nthe same name.\n\nFor examples of variable declarations, see\nhttp://dev.mysql.com/doc/refman/8.0/en/local-variable-scope.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/declare-local-variable.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/declare-local-variable.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (446,20,'NOT BETWEEN','Syntax:\nexpr NOT BETWEEN min AND max\n\nThis is the same as NOT (expr BETWEEN min AND max).\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (447,33,'YEARWEEK','Syntax:\nYEARWEEK(date), YEARWEEK(date,mode)\n\nReturns year and week for a date. The year in the result may be\ndifferent from the year in the date argument for the first and the last\nweek of the year.\n\nThe mode argument works exactly like the mode argument to WEEK(). For\nthe single-argument syntax, a mode value of 0 is used. Unlike WEEK(),\nthe value of default_week_format does not influence YEARWEEK().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT YEARWEEK(\'1987-01-01\');\n        -> 198652\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (448,17,'BIT_OR','Syntax:\nBIT_OR(expr)\n\nReturns the bitwise OR of all bits in expr.\n\nThe result type depends on whether the function argument values are\nevaluated as binary strings or numbers:\n\no Binary-string evaluation occurs when the argument values have a\n  binary string type, and the argument is not a hexadecimal literal,\n  bit literal, or NULL literal. Numeric evaluation occurs otherwise,\n  with argument value conversion to unsigned 64-bit integers as\n  necessary.\n\no Binary-string evaluation produces a binary string of the same length\n  as the argument values. If argument values have unequal lengths, an\n  ER_INVALID_BITWISE_OPERANDS_SIZE error occurs. If the argument size\n  exceeds 511 bytes, an ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE\n  error occurs. Numeric evaluation produces an unsigned 64-bit integer.\n\nIf there are no matching rows, BIT_OR() returns a neutral value (all\nbits set to 0) having the same length as the argument values.\n\nNULL values do not affect the result unless all values are NULL. In\nthat case, the result is a neutral value having the same length as the\nargument values.\n\nFor more information discussion about argument evaluation and result\ntypes, see the introductory discussion in\nhttp://dev.mysql.com/doc/refman/8.0/en/bit-functions.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (449,4,'LOG10','Syntax:\nLOG10(X)\n\nReturns the base-10 logarithm of X. If X is less than or equal to\n0.0E0, the function returns NULL and a warning "Invalid argument for\nlogarithm" is reported.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT LOG10(2);\n        -> 0.30102999566398\nmysql> SELECT LOG10(100);\n        -> 2\nmysql> SELECT LOG10(-100);\n        -> NULL\n','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (450,24,'DECIMAL','DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]\n\nA packed "exact" fixed-point number. M is the total number of digits\n(the precision) and D is the number of digits after the decimal point\n(the scale). The decimal point and (for negative numbers) the - sign\nare not counted in M. If D is 0, values have no decimal point or\nfractional part. The maximum number of digits (M) for DECIMAL is 65.\nThe maximum number of supported decimals (D) is 30. If D is omitted,\nthe default is 0. If M is omitted, the default is 10.\n\nUNSIGNED, if specified, disallows negative values.\n\nAll basic calculations (+, -, *, /) with DECIMAL columns are done with\na precision of 65 digits.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (451,40,'CREATE FUNCTION','The CREATE FUNCTION statement is used to create stored functions and\nuser-defined functions (UDFs):\n\no For information about creating stored functions, see [HELP CREATE\n  PROCEDURE].\n\no For information about creating user-defined functions, see [HELP\n  CREATE FUNCTION UDF].\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/create-function.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/create-function.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (452,20,'<','Syntax:\n<\n\nLess than:\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 2 < 2;\n        -> 0\n','http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (453,13,'MD5','Syntax:\nMD5(str)\n\nCalculates an MD5 128-bit checksum for the string. The value is\nreturned as a string of 32 hexadecimal digits, or NULL if the argument\nwas NULL. The return value can, for example, be used as a hash key. See\nthe notes at the beginning of this section about storing hash values\nefficiently.\n\nThe return value is a string in the connection character set.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SELECT MD5(\'testing\');\n        -> \'ae2b1fca515949e5d54fb22b8ed95575\'\n','http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (454,33,'DAYOFMONTH','Syntax:\nDAYOFMONTH(date)\n\nReturns the day of the month for date, in the range 1 to 31, or 0 for\ndates such as \'0000-00-00\' or \'2008-00-00\' that have a zero day part.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFMONTH(\'2007-02-03\');\n        -> 3\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (455,33,'UNIX_TIMESTAMP','Syntax:\nUNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)\n\nIf called with no argument, returns a Unix timestamp (seconds since\n\'1970-01-01 00:00:00\' UTC). The return value is an integer if no\nargument is given or the argument does not include a fractional seconds\npart, or DECIMAL if an argument is given that includes a fractional\nseconds part.\n\nIf UNIX_TIMESTAMP() is called with a date argument, it returns the\nvalue of the argument as seconds since \'1970-01-01 00:00:00\' UTC. The\ndate argument may be a DATE, DATETIME, or TIMESTAMP string, or a number\nin YYMMDD, YYMMDDHHMMSS, YYYYMMDD, or YYYYMMDDHHMMSS format. If the\nargument includes a time part, it may optionally include a fractional\nseconds part. The server interprets date as a value in the current time\nzone and converts it to an internal value in UTC. Clients can set their\ntime zone as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT UNIX_TIMESTAMP();\n        -> 1447431666\nmysql> SELECT UNIX_TIMESTAMP(\'2015-11-13 10:20:19\');\n        -> 1447431619\nmysql> SELECT UNIX_TIMESTAMP(\'2015-11-13 10:20:19.012\');\n        -> 1447431619.012\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (456,27,'ST_INTERSECTION','ST_Intersection(g1, g2)\n\nReturns a geometry that represents the point set intersection of the\ngeometry values g1 and g2.\n\nST_Intersection() handles its arguments as described in the\nintroduction to this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','mysql> SET @g1 = ST_GeomFromText(\'LineString(1 1, 3 3)\');\nmysql> SET @g2 = ST_GeomFromText(\'LineString(1 3, 3 1)\');\nmysql> SELECT ST_AsText(ST_Intersection(@g1, @g2));\n+--------------------------------------+\n| ST_AsText(ST_Intersection(@g1, @g2)) |\n+--------------------------------------+\n| POINT(2 2)                           |\n+--------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (457,11,'RENAME USER','Syntax:\nRENAME USER old_user TO new_user\n    [, old_user TO new_user] ...\n\nThe RENAME USER statement renames existing MySQL accounts. An error\noccurs for old accounts that do not exist or new accounts that already\nexist.\n\nTo use RENAME USER, you must have the global CREATE USER privilege, or\nthe UPDATE privilege for the mysql database. When the read_only system\nvariable is enabled, RENAME USER additionally requires the\nCONNECTION_ADMIN or SUPER privilege.\n\nEach account name uses the format described in\nhttp://dev.mysql.com/doc/refman/8.0/en/account-names.html. For example:\n\nRENAME USER \'jeffrey\'@\'localhost\' TO \'jeff\'@\'127.0.0.1\';\n\nThe host name part of the account name, if omitted, defaults to \'%\'.\n\nRENAME USER causes the privileges held by the old user to be those held\nby the new user. However, RENAME USER does not automatically drop or\ninvalidate databases or objects within them that the old user created.\nThis includes stored programs or views for which the DEFINER attribute\nnames the old user. Attempts to access such objects may produce an\nerror if they execute in definer security context. (For information\nabout security context, see\nhttp://dev.mysql.com/doc/refman/8.0/en/stored-programs-security.html.)\n\nThe privilege changes take effect as indicated in\nhttp://dev.mysql.com/doc/refman/8.0/en/privilege-changes.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/rename-user.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/rename-user.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (458,17,'LEAD','LEAD(expr [, N[, default]]) [null_treatment] over_clause\n\nReturns the value of expr from the row that leads (follows) the current\nrow by N rows within its partition. If there is no such row, the return\nvalue is default. For example, if N is 3, the return value is default\nfor the last two rows. If N or default are missing, the defaults are 1\nand NULL, respectively.\n\nN must be a literal nonnegative integer. If N is 0, expr is evaluated\nfor the current row.\n\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\nnull_treatment is as described in the section introduction.\n\nFor an example, see the LAG() function description.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (459,33,'LOCALTIMESTAMP','Syntax:\nLOCALTIMESTAMP, LOCALTIMESTAMP([fsp])\n\nLOCALTIMESTAMP and LOCALTIMESTAMP() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (460,33,'ADDDATE','Syntax:\nADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days)\n\nWhen invoked with the INTERVAL form of the second argument, ADDDATE()\nis a synonym for DATE_ADD(). The related function SUBDATE() is a\nsynonym for DATE_SUB(). For information on the INTERVAL unit argument,\nsee the discussion for DATE_ADD().\n\nmysql> SELECT DATE_ADD(\'2008-01-02\', INTERVAL 31 DAY);\n        -> \'2008-02-02\'\nmysql> SELECT ADDDATE(\'2008-01-02\', INTERVAL 31 DAY);\n        -> \'2008-02-02\'\n\nWhen invoked with the days form of the second argument, MySQL treats it\nas an integer number of days to be added to expr.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT ADDDATE(\'2008-01-02\', 31);\n        -> \'2008-02-02\'\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (461,8,'->','Syntax:\ncolumn->path\n\nThe -> operator serves as an alias for the JSON_EXTRACT() function when\nused with two arguments, a column identifier on the left and a JSON\npath on the right that is evaluated against the JSON document (the\ncolumn value). You can use such expressions in place of column\nidentifiers wherever they occur in SQL statements.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SELECT c, JSON_EXTRACT(c, "$.id"), g\n     > FROM jemp\n     > WHERE JSON_EXTRACT(c, "$.id") > 1\n     > ORDER BY JSON_EXTRACT(c, "$.name");\n+-------------------------------+-----------+------+\n| c                             | c->"$.id" | g    |\n+-------------------------------+-----------+------+\n| {"id": "3", "name": "Barney"} | "3"       |    3 |\n| {"id": "4", "name": "Betty"}  | "4"       |    4 |\n| {"id": "2", "name": "Wilma"}  | "2"       |    2 |\n+-------------------------------+-----------+------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT c, c->"$.id", g\n     > FROM jemp\n     > WHERE c->"$.id" > 1\n     > ORDER BY c->"$.name";\n+-------------------------------+-----------+------+\n| c                             | c->"$.id" | g    |\n+-------------------------------+-----------+------+\n| {"id": "3", "name": "Barney"} | "3"       |    3 |\n| {"id": "4", "name": "Betty"}  | "4"       |    4 |\n| {"id": "2", "name": "Wilma"}  | "2"       |    2 |\n+-------------------------------+-----------+------+\n3 rows in set (0.00 sec)\n\nmysql> ALTER TABLE jemp ADD COLUMN n INT;\nQuery OK, 0 rows affected (0.68 sec)\nRecords: 0  Duplicates: 0  Warnings: 0\n\nmysql> UPDATE jemp SET n=1 WHERE c->"$.id" = "4";\nQuery OK, 1 row affected (0.04 sec)\nRows matched: 1  Changed: 1  Warnings: 0\n\nmysql> SELECT c, c->"$.id", g, n\n     > FROM jemp\n     > WHERE JSON_EXTRACT(c, "$.id") > 1\n     > ORDER BY c->"$.name";\n+-------------------------------+-----------+------+------+\n| c                             | c->"$.id" | g    | n    |\n+-------------------------------+-----------+------+------+\n| {"id": "3", "name": "Barney"} | "3"       |    3 | NULL |\n| {"id": "4", "name": "Betty"}  | "4"       |    4 |    1 |\n| {"id": "2", "name": "Wilma"}  | "2"       |    2 | NULL |\n+-------------------------------+-----------+------+------+\n3 rows in set (0.00 sec)\n\nmysql> DELETE FROM jemp WHERE c->"$.id" = "4";\nQuery OK, 1 row affected (0.04 sec)\n\nmysql> SELECT c, c->"$.id", g, n\n     > FROM jemp\n     > WHERE JSON_EXTRACT(c, "$.id") > 1\n     > ORDER BY c->"$.name";\n+-------------------------------+-----------+------+------+\n| c                             | c->"$.id" | g    | n    |\n+-------------------------------+-----------+------+------+\n| {"id": "3", "name": "Barney"} | "3"       |    3 | NULL |\n| {"id": "2", "name": "Wilma"}  | "2"       |    2 | NULL |\n+-------------------------------+-----------+------+------+\n2 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (462,40,'ALTER FUNCTION','Syntax:\nALTER FUNCTION func_name [characteristic ...]\n\ncharacteristic:\n    COMMENT \'string\'\n  | LANGUAGE SQL\n  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n  | SQL SECURITY { DEFINER | INVOKER }\n\nThis statement can be used to change the characteristics of a stored\nfunction. More than one change may be specified in an ALTER FUNCTION\nstatement. However, you cannot change the parameters or body of a\nstored function using this statement; to make such changes, you must\ndrop and re-create the function using DROP FUNCTION and CREATE\nFUNCTION.\n\nYou must have the ALTER ROUTINE privilege for the function. (That\nprivilege is granted automatically to the function creator.) If binary\nlogging is enabled, the ALTER FUNCTION statement might also require the\nSUPER privilege, as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/stored-programs-logging.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/alter-function.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/alter-function.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (463,9,'DEALLOCATE PREPARE','Syntax:\n{DEALLOCATE | DROP} PREPARE stmt_name\n\nTo deallocate a prepared statement produced with PREPARE, use a\nDEALLOCATE PREPARE statement that refers to the prepared statement\nname. Attempting to execute a prepared statement after deallocating it\nresults in an error. If too many prepared statements are created and\nnot deallocated by either the DEALLOCATE PREPARE statement or the end\nof the session, you might encounter the upper limit enforced by the\nmax_prepared_stmt_count system variable.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/deallocate-prepare.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/deallocate-prepare.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (464,15,'IS_FREE_LOCK','Syntax:\nIS_FREE_LOCK(str)\n\nChecks whether the lock named str is free to use (that is, not locked).\nReturns 1 if the lock is free (no one is using the lock), 0 if the lock\nis in use, and NULL if an error occurs (such as an incorrect argument).\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (465,24,'AUTO_INCREMENT','The AUTO_INCREMENT attribute can be used to generate a unique identity\nfor new rows:\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html\n\n','CREATE TABLE animals (\n     id MEDIUMINT NOT NULL AUTO_INCREMENT,\n     name CHAR(30) NOT NULL,\n     PRIMARY KEY (id)\n);\n\nINSERT INTO animals (name) VALUES\n    (\'dog\'),(\'cat\'),(\'penguin\'),\n    (\'lax\'),(\'whale\'),(\'ostrich\');\n\nSELECT * FROM animals;\n','http://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (466,13,'UNCOMPRESS','Syntax:\nUNCOMPRESS(string_to_uncompress)\n\nUncompresses a string compressed by the COMPRESS() function. If the\nargument is not a compressed value, the result is NULL. This function\nrequires MySQL to have been compiled with a compression library such as\nzlib. Otherwise, the return value is always NULL.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESS(COMPRESS(\'any string\'));\n        -> \'any string\'\nmysql> SELECT UNCOMPRESS(\'any string\');\n        -> NULL\n','http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (467,3,'ST_INTERIORRINGN','ST_InteriorRingN(poly, N)\n\nReturns the N-th interior ring for the Polygon value poly as a\nLineString. Rings are numbered beginning with 1.\n\nST_InteriorRingN() handles its arguments as described in the\nintroduction to this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html\n\n','mysql> SET @poly =\n    -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT ST_AsText(ST_InteriorRingN(ST_GeomFromText(@poly),1));\n+-------------------------------------------------------+\n| ST_AsText(ST_InteriorRingN(ST_GeomFromText(@poly),1)) |\n+-------------------------------------------------------+\n| LINESTRING(1 1,1 2,2 2,2 1,1 1)                       |\n+-------------------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (468,15,'IS_VISIBLE_DD_OBJECT','IS_VISIBLE_DD_OBJECT(ARGS)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (469,18,'LAST_INSERT_ID','Syntax:\nLAST_INSERT_ID(), LAST_INSERT_ID(expr)\n\nWith no argument, LAST_INSERT_ID() returns a BIGINT UNSIGNED (64-bit)\nvalue representing the first automatically generated value successfully\ninserted for an AUTO_INCREMENT column as a result of the most recently\nexecuted INSERT statement. The value of LAST_INSERT_ID() remains\nunchanged if no rows are successfully inserted.\n\nWith an argument, LAST_INSERT_ID() returns an unsigned integer.\n\nFor example, after inserting a row that generates an AUTO_INCREMENT\nvalue, you can get the value like this:\n\nmysql> SELECT LAST_INSERT_ID();\n        -> 195\n\nThe currently executing statement does not affect the value of\nLAST_INSERT_ID(). Suppose that you generate an AUTO_INCREMENT value\nwith one statement, and then refer to LAST_INSERT_ID() in a\nmultiple-row INSERT statement that inserts rows into a table with its\nown AUTO_INCREMENT column. The value of LAST_INSERT_ID() will remain\nstable in the second statement; its value for the second and later rows\nis not affected by the earlier row insertions. (However, if you mix\nreferences to LAST_INSERT_ID() and LAST_INSERT_ID(expr), the effect is\nundefined.)\n\nIf the previous statement returned an error, the value of\nLAST_INSERT_ID() is undefined. For transactional tables, if the\nstatement is rolled back due to an error, the value of LAST_INSERT_ID()\nis left undefined. For manual ROLLBACK, the value of LAST_INSERT_ID()\nis not restored to that before the transaction; it remains as it was at\nthe point of the ROLLBACK.\n\nWithin the body of a stored routine (procedure or function) or a\ntrigger, the value of LAST_INSERT_ID() changes the same way as for\nstatements executed outside the body of these kinds of objects. The\neffect of a stored routine or trigger upon the value of\nLAST_INSERT_ID() that is seen by following statements depends on the\nkind of routine:\n\no If a stored procedure executes statements that change the value of\n  LAST_INSERT_ID(), the changed value is seen by statements that follow\n  the procedure call.\n\no For stored functions and triggers that change the value, the value is\n  restored when the function or trigger ends, so following statements\n  will not see a changed value.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/information-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (470,4,'FLOOR','Syntax:\nFLOOR(X)\n\nReturns the largest integer value not greater than X.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT FLOOR(1.23), FLOOR(-1.23);\n        -> 1, -2\n','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (471,4,'COS','Syntax:\nCOS(X)\n\nReturns the cosine of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT COS(PI());\n        -> -1\n','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (472,17,'STD','Syntax:\nSTD(expr) [over_clause]\n\nReturns the population standard deviation of expr. STD() is a synonym\nfor the standard SQL function STDDEV_POP(), provided as a MySQL\nextension.\n\nIf there are no matching rows, STD() returns NULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (473,33,'DATE FUNCTION','Syntax:\nDATE(expr)\n\nExtracts the date part of the date or datetime expression expr.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT DATE(\'2003-12-31 01:02:03\');\n        -> \'2003-12-31\'\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (474,4,'TAN','Syntax:\nTAN(X)\n\nReturns the tangent of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT TAN(PI());\n        -> -1.2246063538224e-16\nmysql> SELECT TAN(PI()+1);\n        -> 1.5574077246549\n','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (475,33,'WEEKOFYEAR','Syntax:\nWEEKOFYEAR(date)\n\nReturns the calendar week of the date as a number in the range from 1\nto 53. WEEKOFYEAR() is a compatibility function that is equivalent to\nWEEK(date,3).\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKOFYEAR(\'2008-02-20\');\n        -> 8\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (476,27,'ST_CONVEXHULL','ST_ConvexHull(g)\n\nReturns a geometry that represents the convex hull of the geometry\nvalue g.\n\nThis function computes a geometry\'s convex hull by first checking\nwhether its vertex points are colinear. The function returns a linear\nhull if so, a polygon hull otherwise. This function processes geometry\ncollections by extracting all vertex points of all components of the\ncollection, creating a MultiPoint value from them, and computing its\nconvex hull.\n\nST_ConvexHull() handles its arguments as described in the introduction\nto this section, with this exception:\n\no The return value is NULL for the additional condition that the\n  argument is an empty geometry collection.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','mysql> SET @g = \'MULTIPOINT(5 0,25 0,15 10,15 25)\';\nmysql> SELECT ST_AsText(ST_ConvexHull(ST_GeomFromText(@g)));\n+-----------------------------------------------+\n| ST_AsText(ST_ConvexHull(ST_GeomFromText(@g))) |\n+-----------------------------------------------+\n| POLYGON((5 0,25 0,15 25,5 0))                 |\n+-----------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (477,17,'CUME_DIST','CUME_DIST() over_clause\n\nReturns the cumulative distribution of a value within a group of\nvalues; that is, the percentage of partition values less than or equal\nto the value in the current row. This represents the number of rows\npreceding or peer with the current row in the window ordering of the\nwindow partition divided by the total number of rows in the window\npartition. Return values range from 0 to 1.\n\nThis function should be used with ORDER BY to sort partition rows into\nthe desired order. Without ORDER BY, all rows are peers and have value\nN/N = 1, where N is the partition size.\n\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','mysql> SELECT\n         val,\n         ROW_NUMBER()   OVER w AS \'row_number\',\n         CUME_DIST()    OVER w AS \'cume_dist\',\n         PERCENT_RANK() OVER w AS \'percent_rank\'\n       FROM numbers\n       WINDOW w AS (ORDER BY val);\n+------+------------+--------------------+--------------+\n| val  | row_number | cume_dist          | percent_rank |\n+------+------------+--------------------+--------------+\n|    1 |          1 | 0.2222222222222222 |            0 |\n|    1 |          2 | 0.2222222222222222 |            0 |\n|    2 |          3 | 0.3333333333333333 |         0.25 |\n|    3 |          4 | 0.6666666666666666 |        0.375 |\n|    3 |          5 | 0.6666666666666666 |        0.375 |\n|    3 |          6 | 0.6666666666666666 |        0.375 |\n|    4 |          7 | 0.8888888888888888 |         0.75 |\n|    4 |          8 | 0.8888888888888888 |         0.75 |\n|    5 |          9 |                  1 |            1 |\n+------+------------+--------------------+--------------+\n','http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (478,33,'SUBTIME','Syntax:\nSUBTIME(expr1,expr2)\n\nSUBTIME() returns expr1 − expr2 expressed as a value in the same\nformat as expr1. expr1 is a time or datetime expression, and expr2 is a\ntime expression.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT SUBTIME(\'2007-12-31 23:59:59.999999\',\'1 1:1:1.000002\');\n        -> \'2007-12-30 22:58:58.999997\'\nmysql> SELECT SUBTIME(\'01:00:00.999999\', \'02:00:00.999998\');\n        -> \'-00:59:59.999999\'\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (479,4,'LOG2','Syntax:\nLOG2(X)\n\nReturns the base-2 logarithm of X. If X is less than or equal to 0.0E0,\nthe function returns NULL and a warning "Invalid argument for\nlogarithm" is reported.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT LOG2(65536);\n        -> 16\nmysql> SELECT LOG2(-100);\n        -> NULL\n','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (480,13,'UNCOMPRESSED_LENGTH','Syntax:\nUNCOMPRESSED_LENGTH(compressed_string)\n\nReturns the length that the compressed string had before being\ncompressed.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT(\'a\',30)));\n        -> 30\n','http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (481,4,'POW','Syntax:\nPOW(X,Y)\n\nReturns the value of X raised to the power of Y.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT POW(2,2);\n        -> 4\nmysql> SELECT POW(2,-2);\n        -> 0.25\n','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (482,40,'DROP TABLE','Syntax:\nDROP [TEMPORARY] TABLE [IF EXISTS]\n    tbl_name [, tbl_name] ...\n    [RESTRICT | CASCADE]\n\nDROP TABLE removes one or more tables. You must have the DROP privilege\nfor each table.\n\nBe careful with this statement! It removes the table definition and all\ntable data. For a partitioned table, it permanently removes the table\ndefinition, all its partitions, and all data stored in those\npartitions. It also removes partition definitions associated with the\ndropped table.\n\nDROP TABLE causes an implicit commit, except when used with the\nTEMPORARY keyword. See\nhttp://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\n*Important*:\n\nWhen a table is dropped, privileges granted specifically for the table\nare not automatically dropped. They must be dropped manually. See [HELP\nGRANT].\n\nIf any tables named in the argument list do not exist, the statement\nfails with an error indicating by name which nonexisting tables it was\nunable to drop, and no changes are made.\n\nUse IF EXISTS to prevent an error from occurring for tables that do not\nexist. Instead of an error, a NOTE is generated for each nonexistent\ntable; these notes can be displayed with SHOW WARNINGS. See [HELP SHOW\nWARNINGS].\n\nIF EXISTS can also be useful for dropping tables in unusual\ncircumstances under which there is an entry in the data dictionary but\nno table managed by the storage engine. (For example, if an abnormal\nserver exit occurs after removal of the table from the storage engine\nbut before removal of the data dictionary entry.)\n\nThe TEMPORARY keyword has the following effects:\n\no The statement drops only TEMPORARY tables.\n\no The statement does not cause an implicit commit.\n\no No access rights are checked. A TEMPORARY table is visible only with\n  the session that created it, so no check is necessary.\n\nUsing TEMPORARY is a good way to ensure that you do not accidentally\ndrop a non-TEMPORARY table.\n\nThe RESTRICT and CASCADE keywords do nothing. They are permitted to\nmake porting easier from other database systems.\n\nDROP TABLE is not supported with all innodb_force_recovery settings.\nSee\nhttp://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/drop-table.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/drop-table.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (483,33,'NOW','Syntax:\nNOW([fsp])\n\nReturns the current date and time as a value in \'YYYY-MM-DD HH:MM:SS\'\nor YYYYMMDDHHMMSS format, depending on whether the function is used in\na string or numeric context. The value is expressed in the current time\nzone.\n\nIf the fsp argument is given to specify a fractional seconds precision\nfrom 0 to 6, the return value includes a fractional seconds part of\nthat many digits.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT NOW();\n        -> \'2007-12-15 23:50:26\'\nmysql> SELECT NOW() + 0;\n        -> 20071215235026.000000\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (484,28,'SHOW ENGINES','Syntax:\nSHOW [STORAGE] ENGINES\n\nSHOW ENGINES displays status information about the server\'s storage\nengines. This is particularly useful for checking whether a storage\nengine is supported, or to see what the default engine is. This\ninformation can also be obtained from the INFORMATION_SCHEMA ENGINES\ntable. See http://dev.mysql.com/doc/refman/8.0/en/engines-table.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-engines.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show-engines.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (485,5,'ST_POINTFROMTEXT','ST_PointFromText(wkt[, srid [, options]])\n\nConstructs a Point value using its WKT representation and SRID.\n\nST_PointFromText() handles its arguments as described in the\nintroduction to this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (486,14,'ST_ENDPOINT','ST_EndPoint(ls)\n\nReturns the Point that is the endpoint of the LineString value ls.\n\nST_EndPoint() handles its arguments as described in the introduction to\nthis section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html\n\n','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT ST_AsText(ST_EndPoint(ST_GeomFromText(@ls)));\n+----------------------------------------------+\n| ST_AsText(ST_EndPoint(ST_GeomFromText(@ls))) |\n+----------------------------------------------+\n| POINT(3 3)                                   |\n+----------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (487,15,'CAN_ACCESS_DATABASE','CAN_ACCESS_DATABASE(ARGS)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (488,15,'IS_IPV6','Syntax:\nIS_IPV6(expr)\n\nReturns 1 if the argument is a valid IPv6 address specified as a\nstring, 0 otherwise. This function does not consider IPv4 addresses to\nbe valid IPv6 addresses.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT IS_IPV6(\'10.0.5.9\'), IS_IPV6(\'::1\');\n        -> 0, 1\n','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (489,24,'LONGBLOB','LONGBLOB\n\nA BLOB column with a maximum length of 4,294,967,295 or 4GB (232 − 1)\nbytes. The effective maximum length of LONGBLOB columns depends on the\nconfigured maximum packet size in the client/server protocol and\navailable memory. Each LONGBLOB value is stored using a 4-byte length\nprefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (490,32,'ST_OVERLAPS','ST_Overlaps(g1, g2)\n\nTwo geometries spatially overlap if they intersect and their\nintersection results in a geometry of the same dimension but not equal\nto either of the given geometries.\n\nThis function returns 1 or 0 to indicate whether g1 spatially overlaps\ng2.\n\nST_Overlaps() handles its arguments as described in the introduction to\nthis section except that the return value is NULL for the additional\ncondition that the dimensions of the two geometries are not equal.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (491,24,'YEAR DATA TYPE','YEAR[(4)]\n\nA year in four-digit format. MySQL displays YEAR values in YYYY format,\nbut permits assignment of values to YEAR columns using either strings\nor numbers. Values display as 1901 to 2155, and 0000.\n\nFor additional information about YEAR display format and interpretation\nof input values, see http://dev.mysql.com/doc/refman/8.0/en/year.html.\n\n*Note*:\n\nMySQL 8.0 does not support the YEAR(2) data type permitted in older\nversions of MySQL. For instructions on converting to YEAR(4), see\nhttp://dev.mysql.com/doc/refman/8.0/en/migrating-to-year4.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (492,17,'SUM','Syntax:\nSUM([DISTINCT] expr) [over_clause]\n\nReturns the sum of expr. If the return set has no rows, SUM() returns\nNULL. The DISTINCT keyword can be used to sum only the distinct values\nof expr.\n\nIf there are no matching rows, SUM() returns NULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html; it\ncannot be used with DISTINCT.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (493,8,'JSON_SET','Syntax:\nJSON_SET(json_doc, path, val[, path, val] ...)\n\nInserts or updates data in a JSON document and returns the result.\nReturns NULL if any argument is NULL or path, if given, does not locate\nan object. An error occurs if the json_doc argument is not a valid JSON\ndocument or any path argument is not a valid path expression or\ncontains a * or ** wildcard.\n\nThe path-value pairs are evaluated left to right. The document produced\nby evaluating one pair becomes the new value against which the next\npair is evaluated.\n\nA path-value pair for an existing path in the document overwrites the\nexisting document value with the new value. A path-value pair for a\nnonexisting path in the document adds the value to the document if the\npath identifies one of these types of values:\n\no A member not present in an existing object. The member is added to\n  the object and associated with the new value.\n\no A position past the end of an existing array. The array is extended\n  with the new value. If the existing value is not an array, it is\n  autowrapped as an array, then extended with the new value.\n\nOtherwise, a path-value pair for a nonexisting path in the document is\nignored and has no effect.\n\nIn MySQL 8.0.4, the optimizer can perform a partial, in-place update of\na JSON column instead of removing the old document and writing the new\ndocument in its entirety to the column. This optimization can be\nperformed for an update statement that uses the JSON_SET() function and\nmeets the conditions outlined in\nhttp://dev.mysql.com/doc/refman/8.0/en/json.html#json-partial-updates.\n\nThe JSON_SET(), JSON_INSERT(), and JSON_REPLACE() functions are\nrelated:\n\no JSON_SET() replaces existing values and adds nonexisting values.\n\no JSON_INSERT() inserts values without replacing existing values.\n\no JSON_REPLACE() replaces only existing values.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SET @j = \'{ "a": 1, "b": [2, 3]}\';\nmysql> SELECT JSON_SET(@j, \'$.a\', 10, \'$.c\', \'[true, false]\');\n+-------------------------------------------------+\n| JSON_SET(@j, \'$.a\', 10, \'$.c\', \'[true, false]\') |\n+-------------------------------------------------+\n| {"a": 10, "b": [2, 3], "c": "[true, false]"}    |\n+-------------------------------------------------+\nmysql> SELECT JSON_INSERT(@j, \'$.a\', 10, \'$.c\', \'[true, false]\');\n+----------------------------------------------------+\n| JSON_INSERT(@j, \'$.a\', 10, \'$.c\', \'[true, false]\') |\n+----------------------------------------------------+\n| {"a": 1, "b": [2, 3], "c": "[true, false]"}        |\n+----------------------------------------------------+\nmysql> SELECT JSON_REPLACE(@j, \'$.a\', 10, \'$.c\', \'[true, false]\');\n+-----------------------------------------------------+\n| JSON_REPLACE(@j, \'$.a\', 10, \'$.c\', \'[true, false]\') |\n+-----------------------------------------------------+\n| {"a": 10, "b": [2, 3]}                              |\n+-----------------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (494,38,'REPEAT FUNCTION','Syntax:\nREPEAT(str,count)\n\nReturns a string consisting of the string str repeated count times. If\ncount is less than 1, returns an empty string. Returns NULL if str or\ncount are NULL.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT REPEAT(\'MySQL\', 3);\n        -> \'MySQLMySQLMySQL\'\n','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (495,38,'SOUNDEX','Syntax:\nSOUNDEX(str)\n\nReturns a soundex string from str. Two strings that sound almost the\nsame should have identical soundex strings. A standard soundex string\nis four characters long, but the SOUNDEX() function returns an\narbitrarily long string. You can use SUBSTRING() on the result to get a\nstandard soundex string. All nonalphabetic characters in str are\nignored. All international alphabetic characters outside the A-Z range\nare treated as vowels.\n\n*Important*:\n\nWhen using SOUNDEX(), you should be aware of the following limitations:\n\no This function, as currently implemented, is intended to work well\n  with strings that are in the English language only. Strings in other\n  languages may not produce reliable results.\n\no This function is not guaranteed to provide consistent results with\n  strings that use multibyte character sets, including utf-8. See Bug\n  #22638 for more information.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT SOUNDEX(\'Hello\');\n        -> \'H400\'\nmysql> SELECT SOUNDEX(\'Quadratically\');\n        -> \'Q36324\'\n','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (496,8,'MBRTOUCHES','MBRTouches(g1, g2)\n\nTwo geometries spatially touch if their interiors do not intersect, but\nthe boundary of one of the geometries intersects either the boundary or\nthe interior of the other.\n\nThis function returns 1 or 0 to indicate whether the minimum bounding\nrectangles of the two geometries g1 and g2 touch.\n\nMBRTouches() handles its arguments as described in the introduction to\nthis section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (497,40,'DROP EVENT','Syntax:\nDROP EVENT [IF EXISTS] event_name\n\nThis statement drops the event named event_name. The event immediately\nceases being active, and is deleted completely from the server.\n\nIf the event does not exist, the error ERROR 1517 (HY000): Unknown\nevent \'event_name\' results. You can override this and cause the\nstatement to generate a warning for nonexistent events instead using IF\nEXISTS.\n\nThis statement requires the EVENT privilege for the schema to which the\nevent to be dropped belongs.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/drop-event.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/drop-event.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (498,24,'VARBINARY','VARBINARY(M)\n\nThe VARBINARY type is similar to the VARCHAR type, but stores binary\nbyte strings rather than nonbinary character strings. M represents the\nmaximum column length in bytes.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (499,28,'LOAD INDEX','Syntax:\nLOAD INDEX INTO CACHE\n  tbl_index_list [, tbl_index_list] ...\n\ntbl_index_list:\n  tbl_name\n    [PARTITION (partition_list | ALL)]\n    [[INDEX|KEY] (index_name[, index_name] ...)]\n    [IGNORE LEAVES]\n\npartition_list:\n    partition_name[, partition_name][, ...]\n\nThe LOAD INDEX INTO CACHE statement preloads a table index into the key\ncache to which it has been assigned by an explicit CACHE INDEX\nstatement, or into the default key cache otherwise.\n\nLOAD INDEX INTO CACHE is used only for MyISAM tables. In MySQL 8.0, it\nis also supported for partitioned MyISAM tables; in addition, indexes\non partitioned tables can be preloaded for one, several, or all\npartitions.\n\nThe IGNORE LEAVES modifier causes only blocks for the nonleaf nodes of\nthe index to be preloaded.\n\nIGNORE LEAVES is also supported for partitioned MyISAM tables.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/load-index.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/load-index.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (500,29,'UNION','Syntax:\nSELECT ...\nUNION [ALL | DISTINCT] SELECT ...\n[UNION [ALL | DISTINCT] SELECT ...]\n\nUNION is used to combine the result from multiple SELECT statements\ninto a single result set.\n\nThe column names from the first SELECT statement are used as the column\nnames for the results returned. Selected columns listed in\ncorresponding positions of each SELECT statement should have the same\ndata type. (For example, the first column selected by the first\nstatement should have the same type as the first column selected by the\nother statements.)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/union.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/union.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (501,33,'TO_DAYS','Syntax:\nTO_DAYS(date)\n\nGiven a date date, returns a day number (the number of days since year\n0).\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TO_DAYS(950501);\n        -> 728779\nmysql> SELECT TO_DAYS(\'2007-10-07\');\n        -> 733321\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (502,28,'SHOW INDEX','Syntax:\nSHOW [EXTENDED] {INDEX | INDEXES | KEYS}\n    {FROM | IN} tbl_name\n    [{FROM | IN} db_name]\n    [WHERE expr]\n\nSHOW INDEX returns table index information. The format resembles that\nof the SQLStatistics call in ODBC. This statement requires some\nprivilege for any column in the table.\n\nYou can use db_name.tbl_name as an alternative to the tbl_name FROM\ndb_name syntax. These two statements are equivalent:\n\nSHOW INDEX FROM mytable FROM mydb;\nSHOW INDEX FROM mydb.mytable;\n\nThe optional EXTENDED keyword causes the output to include information\nabout hidden indexes that MySQL uses internally and are not accessible\nby users.\n\nThe WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttp://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nmysql> SHOW INDEX FROM City\\G\n*************************** 1. row ***************************\n        Table: city\n   Non_unique: 0\n     Key_name: PRIMARY\n Seq_in_index: 1\n  Column_name: ID\n    Collation: A\n  Cardinality: 4321\n     Sub_part: NULL\n       Packed: NULL\n         Null: \n   Index_type: BTREE\n      Comment: \nIndex_comment: \n*************************** 2. row ***************************\n        Table: city\n   Non_unique: 1\n     Key_name: CountryCode\n Seq_in_index: 1\n  Column_name: CountryCode\n    Collation: A\n  Cardinality: 4321\n     Sub_part: NULL\n       Packed: NULL\n         Null: \n   Index_type: BTREE\n      Comment: \nIndex_comment: \n\nSHOW INDEX returns the following fields:\n\no Table\n\n  The name of the table.\n\no Non_unique\n\n  0 if the index cannot contain duplicates, 1 if it can.\n\no Key_name\n\n  The name of the index. If the index is the primary key, the name is\n  always PRIMARY.\n\no Seq_in_index\n\n  The column sequence number in the index, starting with 1.\n\no Column_name\n\n  The column name.\n\no Collation\n\n  How the column is sorted in the index. This can have values A\n  (ascending), D (descending), or NULL (not sorted).\n\no Cardinality\n\n  An estimate of the number of unique values in the index. To update\n  this number, run ANALYZE TABLE or (for MyISAM tables) myisamchk -a.\n\n  Cardinality is counted based on statistics stored as integers, so the\n  value is not necessarily exact even for small tables. The higher the\n  cardinality, the greater the chance that MySQL uses the index when\n  doing joins.\n\no Sub_part\n\n  The index prefix. That is, the number of indexed characters if the\n  column is only partly indexed, NULL if the entire column is indexed.\n\n  *Note*:\n\n  Prefix limits are measured in bytes, whereas the prefix length in\n  CREATE TABLE, ALTER TABLE, and CREATE INDEX statements is interpreted\n  as number of characters for nonbinary string types (CHAR, VARCHAR,\n  TEXT) and number of bytes for binary string types (BINARY, VARBINARY,\n  BLOB). Take this into account when specifying a prefix length for a\n  nonbinary string column that uses a multibyte character set.\n\n  For additional information about index prefixes, see\n  http://dev.mysql.com/doc/refman/8.0/en/column-indexes.html, and [HELP\n  CREATE INDEX].\n\no Packed\n\n  Indicates how the key is packed. NULL if it is not.\n\no Null\n\n  Contains YES if the column may contain NULL values and \'\' if not.\n\no Index_type\n\n  The index method used (BTREE, FULLTEXT, HASH, RTREE).\n\no Comment\n\n  Information about the index not described in its own column, such as\n  disabled if the index is disabled.\n\no Index_comment\n\n  Any comment provided for the index with a COMMENT attribute when the\n  index was created.\n\no Visible\n\n  Whether the index is visible to the optimizer. See\n  http://dev.mysql.com/doc/refman/8.0/en/invisible-indexes.html.\n\nYou can also obtain information about table indexes from\nINFORMATION_SCHEMA, which contains a STATISTICS table. See\nhttp://dev.mysql.com/doc/refman/8.0/en/statistics-table.html. The\nextended information about hidden indexes is available only using SHOW\nEXTENDED INDEX; it cannot be obtained from the STATISTICS table.\n\nYou can list a table\'s indexes with the mysqlshow -k db_name tbl_name\ncommand.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-index.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show-index.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (503,28,'SHOW CREATE DATABASE','Syntax:\nSHOW CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name\n\nShows the CREATE DATABASE statement that creates the named database. If\nthe SHOW statement includes an IF NOT EXISTS clause, the output too\nincludes such a clause. SHOW CREATE SCHEMA is a synonym for SHOW CREATE\nDATABASE.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-create-database.html\n\n','mysql> SHOW CREATE DATABASE test\\G\n*************************** 1. row ***************************\n       Database: test\nCreate Database: CREATE DATABASE `test`\n                 /*!40100 DEFAULT CHARACTER SET utf8mb4 */\n\nmysql> SHOW CREATE SCHEMA test\\G\n*************************** 1. row ***************************\n       Database: test\nCreate Database: CREATE DATABASE `test`\n                 /*!40100 DEFAULT CHARACTER SET utf8mb4 */\n','http://dev.mysql.com/doc/refman/8.0/en/show-create-database.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (504,16,'!','Syntax:\nNOT, !\n\nLogical NOT. Evaluates to 1 if the operand is 0, to 0 if the operand is\nnonzero, and NOT NULL returns NULL.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/logical-operators.html\n\n','mysql> SELECT NOT 10;\n        -> 0\nmysql> SELECT NOT 0;\n        -> 1\nmysql> SELECT NOT NULL;\n        -> NULL\nmysql> SELECT ! (1+1);\n        -> 0\nmysql> SELECT ! 1+1;\n        -> 1\n','http://dev.mysql.com/doc/refman/8.0/en/logical-operators.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (505,25,'DECLARE HANDLER','Syntax:\nDECLARE handler_action HANDLER\n    FOR condition_value [, condition_value] ...\n    statement\n\nhandler_action:\n    CONTINUE\n  | EXIT\n  | UNDO\n\ncondition_value:\n    mysql_error_code\n  | SQLSTATE [VALUE] sqlstate_value\n  | condition_name\n  | SQLWARNING\n  | NOT FOUND\n  | SQLEXCEPTION\n\nThe DECLARE ... HANDLER statement specifies a handler that deals with\none or more conditions. If one of these conditions occurs, the\nspecified statement executes. statement can be a simple statement such\nas SET var_name = value, or a compound statement written using BEGIN\nand END (see [HELP BEGIN END]).\n\nHandler declarations must appear after variable or condition\ndeclarations.\n\nThe handler_action value indicates what action the handler takes after\nexecution of the handler statement:\n\no CONTINUE: Execution of the current program continues.\n\no EXIT: Execution terminates for the BEGIN ... END compound statement\n  in which the handler is declared. This is true even if the condition\n  occurs in an inner block.\n\no UNDO: Not supported.\n\nThe condition_value for DECLARE ... HANDLER indicates the specific\ncondition or class of conditions that activates the handler. It can\ntake the following forms:\n\no mysql_error_code: An integer literal indicating a MySQL error code,\n  such as 1051 to specify "unknown table":\n\nDECLARE CONTINUE HANDLER FOR 1051\n  BEGIN\n    -- body of handler\n  END;\n\n  Do not use MySQL error code 0 because that indicates success rather\n  than an error condition. For a list of MySQL error codes, see\n  http://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html.\n\no SQLSTATE [VALUE] sqlstate_value: A 5-character string literal\n  indicating an SQLSTATE value, such as \'42S01\' to specify "unknown\n  table":\n\nDECLARE CONTINUE HANDLER FOR SQLSTATE \'42S02\'\n  BEGIN\n    -- body of handler\n  END;\n\n  Do not use SQLSTATE values that begin with \'00\' because those\n  indicate success rather than an error condition. For a list of\n  SQLSTATE values, see\n  http://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html.\n\no condition_name: A condition name previously specified with DECLARE\n  ... CONDITION. A condition name can be associated with a MySQL error\n  code or SQLSTATE value. See [HELP DECLARE CONDITION].\n\no SQLWARNING: Shorthand for the class of SQLSTATE values that begin\n  with \'01\'.\n\nDECLARE CONTINUE HANDLER FOR SQLWARNING\n  BEGIN\n    -- body of handler\n  END;\n\no NOT FOUND: Shorthand for the class of SQLSTATE values that begin with\n  \'02\'. This is relevant within the context of cursors and is used to\n  control what happens when a cursor reaches the end of a data set. If\n  no more rows are available, a No Data condition occurs with SQLSTATE\n  value \'02000\'. To detect this condition, you can set up a handler for\n  it or for a NOT FOUND condition.\n\nDECLARE CONTINUE HANDLER FOR NOT FOUND\n  BEGIN\n    -- body of handler\n  END;\n\n  For another example, see\n  http://dev.mysql.com/doc/refman/8.0/en/cursors.html. The NOT FOUND\n  condition also occurs for SELECT ... INTO var_list statements that\n  retrieve no rows.\n\no SQLEXCEPTION: Shorthand for the class of SQLSTATE values that do not\n  begin with \'00\', \'01\', or \'02\'.\n\nDECLARE CONTINUE HANDLER FOR SQLEXCEPTION\n  BEGIN\n    -- body of handler\n  END;\n\nFor information about how the server chooses handlers when a condition\noccurs, see http://dev.mysql.com/doc/refman/8.0/en/handler-scope.html.\n\nIf a condition occurs for which no handler has been declared, the\naction taken depends on the condition class:\n\no For SQLEXCEPTION conditions, the stored program terminates at the\n  statement that raised the condition, as if there were an EXIT\n  handler. If the program was called by another stored program, the\n  calling program handles the condition using the handler selection\n  rules applied to its own handlers.\n\no For SQLWARNING conditions, the program continues executing, as if\n  there were a CONTINUE handler.\n\no For NOT FOUND conditions, if the condition was raised normally, the\n  action is CONTINUE. If it was raised by SIGNAL or RESIGNAL, the\n  action is EXIT.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/declare-handler.html\n\n','mysql> CREATE TABLE test.t (s1 INT, PRIMARY KEY (s1));\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE handlerdemo ()\n    -> BEGIN\n    ->   DECLARE CONTINUE HANDLER FOR SQLSTATE \'23000\' SET @x2 = 1;\n    ->   SET @x = 1;\n    ->   INSERT INTO test.t VALUES (1);\n    ->   SET @x = 2;\n    ->   INSERT INTO test.t VALUES (1);\n    ->   SET @x = 3;\n    -> END;\n    -> //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> CALL handlerdemo()//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @x//\n    +------+\n    | @x   |\n    +------+\n    | 3    |\n    +------+\n    1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/8.0/en/declare-handler.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (506,24,'DOUBLE','DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]\n\nA normal-size (double-precision) floating-point number. Permissible\nvalues are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and\n2.2250738585072014E-308 to 1.7976931348623157E+308. These are the\ntheoretical limits, based on the IEEE standard. The actual range might\nbe slightly smaller depending on your hardware or operating system.\n\nM is the total number of digits and D is the number of digits following\nthe decimal point. If M and D are omitted, values are stored to the\nlimits permitted by the hardware. A double-precision floating-point\nnumber is accurate to approximately 15 decimal places.\n\nUNSIGNED, if specified, disallows negative values.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (507,24,'TIME','TIME[(fsp)]\n\nA time. The range is \'-838:59:59.000000\' to \'838:59:59.000000\'. MySQL\ndisplays TIME values in \'HH:MM:SS[.fraction]\' format, but permits\nassignment of values to TIME columns using either strings or numbers.\n\nAn optional fsp value in the range from 0 to 6 may be given to specify\nfractional seconds precision. A value of 0 signifies that there is no\nfractional part. If omitted, the default precision is 0.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (508,18,'SYSTEM_USER','Syntax:\nSYSTEM_USER()\n\nSYSTEM_USER() is a synonym for USER().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/information-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (509,33,'CURRENT_DATE','Syntax:\nCURRENT_DATE, CURRENT_DATE()\n\nCURRENT_DATE and CURRENT_DATE() are synonyms for CURDATE().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (510,40,'TRUNCATE TABLE','Syntax:\nTRUNCATE [TABLE] tbl_name\n\nTRUNCATE TABLE empties a table completely. It requires the DROP\nprivilege. Logically, TRUNCATE TABLE is similar to a DELETE statement\nthat deletes all rows, or a sequence of DROP TABLE and CREATE TABLE\nstatements.\n\nTo achieve high performance, TRUNCATE TABLE bypasses the DML method of\ndeleting data. Thus, it does not cause ON DELETE triggers to fire, it\ncannot be performed for InnoDB tables with parent-child foreign key\nrelationships, and it cannot be rolled back like a DML operation.\nHowever, TRUNCATE TABLE operations on tables that use an atomic\nDDL-supported storage engine are either fully committed or rolled back\nif the server halts during their operation. For more information, see\nhttp://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html.\n\nAlthough TRUNCATE TABLE is similar to DELETE, it is classified as a DDL\nstatement rather than a DML statement. It differs from DELETE in the\nfollowing ways:\n\no Truncate operations drop and re-create the table, which is much\n  faster than deleting rows one by one, particularly for large tables.\n\no Truncate operations cause an implicit commit, and so cannot be rolled\n  back. See\n  http://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\no Truncation operations cannot be performed if the session holds an\n  active table lock.\n\no TRUNCATE TABLE fails for an InnoDB table or NDB\n  (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html) table if\n  there are any FOREIGN KEY constraints from other tables that\n  reference the table. Foreign key constraints between columns of the\n  same table are permitted.\n\no Truncation operations do not return a meaningful value for the number\n  of deleted rows. The usual result is "0 rows affected," which should\n  be interpreted as "no information."\n\no As long as the table definition is valid, the table can be re-created\n  as an empty table with TRUNCATE TABLE, even if the data or index\n  files have become corrupted.\n\no Any AUTO_INCREMENT value is reset to its start value. This is true\n  even for MyISAM and InnoDB, which normally do not reuse sequence\n  values.\n\no When used with partitioned tables, TRUNCATE TABLE preserves the\n  partitioning; that is, the data and index files are dropped and\n  re-created, while the partition definitions are unaffected.\n\no The TRUNCATE TABLE statement does not invoke ON DELETE triggers.\n\no As of MySQL 8.0.11, truncating a corrupted InnoDB table is supported.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/truncate-table.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/truncate-table.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (511,9,'START SLAVE','Syntax:\nSTART SLAVE [thread_types] [until_option] [connection_options] [channel_option]\n\nthread_types:\n    [thread_type [, thread_type] ... ]\n\nthread_type:\n    IO_THREAD | SQL_THREAD\n\nuntil_option:\n    UNTIL {   {SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS} = gtid_set\n          |   MASTER_LOG_FILE = \'log_name\', MASTER_LOG_POS = log_pos\n          |   RELAY_LOG_FILE = \'log_name\', RELAY_LOG_POS = log_pos\n          |   SQL_AFTER_MTS_GAPS  }\n\nconnection_options:\n    [USER=\'user_name\'] [PASSWORD=\'user_pass\'] [DEFAULT_AUTH=\'plugin_name\'] [PLUGIN_DIR=\'plugin_dir\']\n\n\nchannel_option:\n    FOR CHANNEL channel\n\ngtid_set:\n    uuid_set [, uuid_set] ...\n    | \'\'\n\nuuid_set:\n    uuid:interval[:interval]...\n\nuuid:\n    hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh\n\nh:\n    [0-9,A-F]\n\ninterval:\n    n[-n]\n\n    (n >= 1)\n\nSTART SLAVE with no thread_type options starts both of the slave\nthreads. The I/O thread reads events from the master server and stores\nthem in the relay log. The SQL thread reads events from the relay log\nand executes them. START SLAVE requires the REPLICATION_SLAVE_ADMIN or\nSUPER privilege.\n\nIf START SLAVE succeeds in starting the slave threads, it returns\nwithout any error. However, even in that case, it might be that the\nslave threads start and then later stop (for example, because they do\nnot manage to connect to the master or read its binary log, or some\nother problem). START SLAVE does not warn you about this. You must\ncheck the slave\'s error log for error messages generated by the slave\nthreads, or check that they are running satisfactorily with SHOW SLAVE\nSTATUS.\n\nSTART SLAVE causes an implicit commit of an ongoing transaction. See\nhttp://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\ngtid_next must be set to AUTOMATIC before issuing this statement.\n\nThe optional FOR CHANNEL channel clause enables you to name which\nreplication channel the statement applies to. Providing a FOR CHANNEL\nchannel clause applies the START SLAVE statement to a specific\nreplication channel. If no clause is named and no extra channels exist,\nthe statement applies to the default channel. If a START SLAVE\nstatement does not have a channel defined when using multiple channels,\nthis statement starts the specified threads for all channels. This\nstatement is disallowed for the group_replication_recovery channel. See\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-channels.html for\nmore information.\n\nMySQL supports pluggable user-password authentication with START SLAVE\nwith the USER, PASSWORD, DEFAULT_AUTH and PLUGIN_DIR options, as\ndescribed in the following list:\n\no USER: User name. Cannot be set to an empty or null string, or left\n  unset if PASSWORD is used.\n\no PASSWORD: Password.\n\no DEFAULT_AUTH: Name of plugin; default is MySQL native authentication.\n\no PLUGIN_DIR: Location of plugin.\n\nYou cannot use the SQL_THREAD option when specifying any of USER,\nPASSWORD, DEFAULT_AUTH, or PLUGIN_DIR, unless the IO_THREAD option is\nalso provided.\n\nSee\nhttp://dev.mysql.com/doc/refman/8.0/en/pluggable-authentication.html,\nfor more information.\n\nIf an insecure connection is used with any these options, the server\nissues the warning Sending passwords in plain text without SSL/TLS is\nextremely insecure.\n\nSTART SLAVE ... UNTIL supports two additional options for use with\nglobal transaction identifiers (GTIDs) (see\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-gtids.html). Each of\nthese takes a set of one or more global transaction identifiers\ngtid_set as an argument (see\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-gtids-concepts.html#\nreplication-gtids-concepts-gtid-sets, for more information).\n\nWhen no thread_type is specified, START SLAVE UNTIL SQL_BEFORE_GTIDS\ncauses the slave SQL thread to process transactions until it has\nreached the first transaction whose GTID is listed in the gtid_set.\nSTART SLAVE UNTIL SQL_AFTER_GTIDS causes the slave threads to process\nall transactions until the last transaction in the gtid_set has been\nprocessed by both threads. In other words, START SLAVE UNTIL\nSQL_BEFORE_GTIDS causes the slave SQL thread to process all\ntransactions occurring before the first GTID in the gtid_set is\nreached, and START SLAVE UNTIL SQL_AFTER_GTIDS causes the slave threads\nto handle all transactions, including those whose GTIDs are found in\ngtid_set, until each has encountered a transaction whose GTID is not\npart of the set. SQL_BEFORE_GTIDS and SQL_AFTER_GTIDS each support the\nSQL_THREAD and IO_THREAD options, although using IO_THREAD with them\ncurrently has no effect.\n\nFor example, START SLAVE SQL_THREAD UNTIL SQL_BEFORE_GTIDS =\n3E11FA47-71CA-11E1-9E33-C80AA9429562:11-56 causes the slave SQL thread\nto process all transactions originating from the master whose\nserver_uuid is 3E11FA47-71CA-11E1-9E33-C80AA9429562 until it encounters\nthe transaction having sequence number 11; it then stops without\nprocessing this transaction. In other words, all transactions up to and\nincluding the transaction with sequence number 10 are processed.\nExecuting START SLAVE SQL_THREAD UNTIL SQL_AFTER_GTIDS =\n3E11FA47-71CA-11E1-9E33-C80AA9429562:11-56, on the other hand, would\ncause the slave SQL thread to obtain all transactions just mentioned\nfrom the master, including all of the transactions having the sequence\nnumbers 11 through 56, and then to stop without processing any\nadditional transactions; that is, the transaction having sequence\nnumber 56 would be the last transaction fetched by the slave SQL\nthread.\n\nWhen using a multi-threaded slave with slave_preserve_commit_order=0\nset, there is a chance of gaps in the sequence of transactions that\nhave been executed from the relay log in the following cases:\n\no killing the coordinator thread\n\no after an error occurs in the applier threads\n\no mysqld shuts down unexpectedly\n\nUse the START SLAVE UNTIL SQL_AFTER_MTS_GAPS statement to cause a\nmulti-threaded slave\'s worker threads to only run until no more gaps\nare found in the relay log, and then to stop. This statement can take\nan SQL_THREAD option, but the effects of the statement remain\nunchanged. It has no effect on the slave I/O thread (and cannot be used\nwith the IO_THREAD option).\n\nIssuing START SLAVE on a multi-threaded slave with gaps in the sequence\nof transactions executed from the relay log generates a warning. In\nsuch a situation, the solution is to use START SLAVE UNTIL\nSQL_AFTER_MTS_GAPS, then issue RESET SLAVE to remove any remaining\nrelay logs. See\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-features-transaction\n-inconsistencies.html for more information.\n\nTo change a failed multi-threaded slave to single-threaded mode, you\ncan issue the following series of statements, in the order shown:\n\nSTART SLAVE UNTIL SQL_AFTER_MTS_GAPS;\n\nSET @@GLOBAL.slave_parallel_workers = 0;\n\nSTART SLAVE SQL_THREAD;\n\n*Note*:\n\nIt is possible to view the entire text of a running START SLAVE ...\nstatement, including any USER or PASSWORD values used, in the output of\nSHOW PROCESSLIST. This is also true for the text of a running CHANGE\nMASTER TO statement, including any values it employs for MASTER_USER or\nMASTER_PASSWORD.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/start-slave.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/start-slave.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (512,28,'SHOW WARNINGS','Syntax:\nSHOW WARNINGS [LIMIT [offset,] row_count]\nSHOW COUNT(*) WARNINGS\n\nSHOW WARNINGS is a diagnostic statement that displays information about\nthe conditions (errors, warnings, and notes) resulting from executing a\nstatement in the current session. Warnings are generated for DML\nstatements such as INSERT, UPDATE, and LOAD DATA INFILE as well as DDL\nstatements such as CREATE TABLE and ALTER TABLE.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttp://dev.mysql.com/doc/refman/8.0/en/select.html.\n\nSHOW WARNINGS is also used following EXPLAIN, to display the extended\ninformation generated by EXPLAIN. See\nhttp://dev.mysql.com/doc/refman/8.0/en/explain-extended.html.\n\nSHOW WARNINGS displays information about the conditions resulting from\nexecution of the most recent nondiagnostic statement in the current\nsession. If the most recent statement resulted in an error during\nparsing, SHOW WARNINGS shows the resulting conditions, regardless of\nstatement type (diagnostic or nondiagnostic).\n\nThe SHOW COUNT(*) WARNINGS diagnostic statement displays the total\nnumber of errors, warnings, and notes. You can also retrieve this\nnumber from the warning_count system variable:\n\nSHOW COUNT(*) WARNINGS;\nSELECT @@warning_count;\n\nA difference in these statements is that the first is a diagnostic\nstatement that does not clear the message list. The second, because it\nis a SELECT statement is considered nondiagnostic and does clear the\nmessage list.\n\nA related diagnostic statement, SHOW ERRORS, shows only error\nconditions (it excludes warnings and notes), and SHOW COUNT(*) ERRORS\nstatement displays the total number of errors. See [HELP SHOW ERRORS].\nGET DIAGNOSTICS can be used to examine information for individual\nconditions. See [HELP GET DIAGNOSTICS].\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-warnings.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show-warnings.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (513,5,'ST_LINEFROMTEXT','ST_LineFromText(wkt[, srid [, options]]), ST_LineStringFromText(wkt[,\nsrid [, options]])\n\nConstructs a LineString value using its WKT representation and SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (514,11,'DROP USER','Syntax:\nDROP USER [IF EXISTS] user [, user] ...\n\nThe DROP USER statement removes one or more MySQL accounts and their\nprivileges. It removes privilege rows for the account from all grant\ntables.\n\nRoles named in the mandatory_roles system variable value cannot be\ndropped.\n\nTo use DROP USER, you must have the global CREATE USER privilege, or\nthe DELETE privilege for the mysql database. When the read_only system\nvariable is enabled, DROP USER additionally requires the\nCONNECTION_ADMIN or SUPER privilege.\n\nDROP USER either succeeds for all named users or rolls back and has no\neffect if any error occurs. By default, an error occurs if you try to\ndrop a user that does not exist. If the IF EXISTS clause is given, the\nstatement produces a warning for each named user that does not exist,\nrather than an error.\n\nThe statement is written to the binary log if it succeeds, but not if\nit fails; in that case, rollback occurs and no changes are made. A\nstatement written to the binary log includes all named users. If the IF\nEXISTS clause is given, this includes even users that do not exist and\nwere not dropped.\n\nEach account name uses the format described in\nhttp://dev.mysql.com/doc/refman/8.0/en/account-names.html. For example:\n\nDROP USER \'jeffrey\'@\'localhost\';\n\nThe host name part of the account name, if omitted, defaults to \'%\'.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/drop-user.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/drop-user.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (515,38,'SUBSTRING','Syntax:\nSUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len),\nSUBSTRING(str FROM pos FOR len)\n\nThe forms without a len argument return a substring from string str\nstarting at position pos. The forms with a len argument return a\nsubstring len characters long from string str, starting at position\npos. The forms that use FROM are standard SQL syntax. It is also\npossible to use a negative value for pos. In this case, the beginning\nof the substring is pos characters from the end of the string, rather\nthan the beginning. A negative value may be used for pos in any of the\nforms of this function.\n\nFor all forms of SUBSTRING(), the position of the first character in\nthe string from which the substring is to be extracted is reckoned as\n1.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT SUBSTRING(\'Quadratically\',5);\n        -> \'ratically\'\nmysql> SELECT SUBSTRING(\'foobarbar\' FROM 4);\n        -> \'barbar\'\nmysql> SELECT SUBSTRING(\'Quadratically\',5,6);\n        -> \'ratica\'\nmysql> SELECT SUBSTRING(\'Sakila\', -3);\n        -> \'ila\'\nmysql> SELECT SUBSTRING(\'Sakila\', -5, 3);\n        -> \'aki\'\nmysql> SELECT SUBSTRING(\'Sakila\' FROM -4 FOR 2);\n        -> \'ki\'\n','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (516,17,'LAG','LAG(expr [, N[, default]]) [null_treatment] over_clause\n\nReturns the value of expr from the row that lags (precedes) the current\nrow by N rows within its partition. If there is no such row, the return\nvalue is default. For example, if N is 3, the return value is default\nfor the first two rows. If N or default are missing, the defaults are 1\nand NULL, respectively.\n\nN must be a literal nonnegative integer. If N is 0, expr is evaluated\nfor the current row.\n\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\nnull_treatment is as described in the section introduction.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','mysql> SELECT\n         t, val,\n         LAG(val)        OVER w AS \'lag\',\n         LEAD(val)       OVER w AS \'lead\',\n         val - LAG(val)  OVER w AS \'lag diff\',\n         val - LEAD(val) OVER w AS \'lead diff\'\n       FROM series\n       WINDOW w AS (ORDER BY t);\n+----------+------+------+------+----------+-----------+\n| t        | val  | lag  | lead | lag diff | lead diff |\n+----------+------+------+------+----------+-----------+\n| 12:00:00 |  100 | NULL |  125 |     NULL |       -25 |\n| 13:00:00 |  125 |  100 |  132 |       25 |        -7 |\n| 14:00:00 |  132 |  125 |  145 |        7 |       -13 |\n| 15:00:00 |  145 |  132 |  140 |       13 |         5 |\n| 16:00:00 |  140 |  145 |  150 |       -5 |       -10 |\n| 17:00:00 |  150 |  140 |  200 |       10 |       -50 |\n| 18:00:00 |  200 |  150 | NULL |       50 |      NULL |\n+----------+------+------+------+----------+-----------+\n\nmysql> SELECT n FROM fib ORDER BY n;\n+------+\n| n    |\n+------+\n|    1 |\n|    1 |\n|    2 |\n|    3 |\n|    5 |\n|    8 |\n+------+\n\nmysql> SELECT\n         n,\n         LAG(n, 1, 0)      OVER w AS \'lag\',\n         LEAD(n, 1, 0)     OVER w AS \'lead\',\n         n + LAG(n, 1, 0)  OVER w AS \'next_n\',\n         n + LEAD(n, 1, 0) OVER w AS \'next_next_n\'\n       FROM fib\n       WINDOW w AS (ORDER BY n);\n+------+------+------+--------+-------------+\n| n    | lag  | lead | next_n | next_next_n |\n+------+------+------+--------+-------------+\n|    1 |    0 |    1 |      1 |           2 |\n|    1 |    1 |    2 |      2 |           3 |\n|    2 |    1 |    3 |      3 |           5 |\n|    3 |    2 |    5 |      5 |           8 |\n|    5 |    3 |    8 |      8 |          13 |\n|    8 |    5 |    0 |     13 |           8 |\n+------+------+------+--------+-------------+\n','http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (517,28,'SHOW FUNCTION STATUS','Syntax:\nSHOW FUNCTION STATUS\n    [LIKE \'pattern\' | WHERE expr]\n\nThis statement is similar to SHOW PROCEDURE STATUS but for stored\nfunctions. See [HELP SHOW PROCEDURE STATUS].\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-function-status.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show-function-status.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (518,38,'LTRIM','Syntax:\nLTRIM(str)\n\nReturns the string str with leading space characters removed.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT LTRIM(\'  barbar\');\n        -> \'barbar\'\n','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (519,15,'INTERNAL_AVG_ROW_LENGTH','INTERNAL_AVG_ROW_LENGTH(ARGS)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (520,1,'INSTALL COMPONENT','Syntax:\nINSTALL COMPONENT component_name [, component_name ] ...\n\nThis statement installs one or more server components, which become\nactive immediately. A component provides services that are available to\nthe server and other components; see\nhttp://dev.mysql.com/doc/refman/8.0/en/server-components.html. INSTALL\nCOMPONENT requires the INSERT privilege for the mysql.component system\ntable.\n\nExample:\n\nINSTALL COMPONENT \'file://component1\', \'file://component2\';\n\nComponent names are URNs that begin with file:// and indicate the base\nname of the file that implements the component, located in the\ndirectory named by the plugin_dir system variable. Component names do\nnot include any platform-dependent file name suffix such as .so or\n.dll. (These naming details are subject to change because component\nname interpretation is itself performed by a service and the component\ninfrastructure makes it possible to replace the default service\nimplementation with alternative implementations.)\n\nIf any error occurs, the statement fails and has no effect. For\nexample, this happens if a component name is erroneous, a named\ncomponent does not exist or is already installed, or component\ninitialization fails.\n\nA loader service handles component loading, which includes adding\ninstalled components to the mysql.component system table that serves as\na registry. For subsequent server restarts, any components listed in\nmysql.component are loaded by the loader service during the startup\nsequence. This occurs even if the server is started with the\n--skip-grant-tables option.\n\nIf a component depends on services not present in the registry and you\nattempt to install the component without also installing the component\nor components that provide the services on which it depends, an error\noccurs:\n\nERROR 3527 (HY000): Cannot satisfy dependency for service \'component_a\'\nrequired by component \'component_b\'.\n\nTo avoid this problem, either install all components in the same\nstatement, or install the dependent component after installing any\ncomponents on which it depends.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/install-component.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/install-component.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (521,32,'ST_CROSSES','ST_Crosses(g1, g2)\n\nTwo geometries spatially cross if their spatial relation has the\nfollowing properties:\n\no Unless g1 and and g2 are both of dimension 1: g1 crosses g2 if the\n  interior of g2 has points in common with the interior of g1, but g2\n  does not cover the entire interior of g1.\n\no If both g1 and g2 are of dimension 1: If the lines cross each other\n  in a finite number of points (that is, no common line segments, only\n  single points in common).\n\nThis function returns 1 or 0 to indicate whether g1 spatially crosses\ng2.\n\nST_Crosses() handles its arguments as described in the introduction to\nthis section except that the return value is NULL for these additional\nconditions:\n\no g1 is of dimension 2 (Polygon or MultiPolygon).\n\no g2 is of dimension 1 (Point or MultiPoint).\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (522,5,'ST_MPOLYFROMTEXT','ST_MPolyFromText(wkt[, srid [, options]]),\nST_MultiPolygonFromText(wkt[, srid [, options]])\n\nConstructs a MultiPolygon value using its WKT representation and SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (523,8,'MBRDISJOINT','MBRDisjoint(g1, g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangles of\nthe two geometries g1 and g2 are disjoint (do not intersect).\n\nMBRDisjoint() handles its arguments as described in the introduction to\nthis section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (524,15,'VALUES','Syntax:\nVALUES(col_name)\n\nIn an INSERT ... ON DUPLICATE KEY UPDATE statement, you can use the\nVALUES(col_name) function in the UPDATE clause to refer to column\nvalues from the INSERT portion of the statement. In other words,\nVALUES(col_name) in the UPDATE clause refers to the value of col_name\nthat would be inserted, had no duplicate-key conflict occurred. This\nfunction is especially useful in multiple-row inserts. The VALUES()\nfunction is meaningful only in the ON DUPLICATE KEY UPDATE clause of\nINSERT statements and returns NULL otherwise. See\nhttp://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)\n    -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);\n','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (525,29,'CALL','Syntax:\nCALL sp_name([parameter[,...]])\nCALL sp_name[()]\n\nThe CALL statement invokes a stored procedure that was defined\npreviously with CREATE PROCEDURE.\n\nStored procedures that take no arguments can be invoked without\nparentheses. That is, CALL p() and CALL p are equivalent.\n\nCALL can pass back values to its caller using parameters that are\ndeclared as OUT or INOUT parameters. When the procedure returns, a\nclient program can also obtain the number of rows affected for the\nfinal statement executed within the routine: At the SQL level, call the\nROW_COUNT() function; from the C API, call the mysql_affected_rows()\nfunction.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/call.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/call.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (526,13,'ENCODE','Syntax:\nENCODE(str,pass_str)\n\nThis function was removed in MySQL 8.0.3.\n\nConsider using AES_ENCRYPT() and AES_DECRYPT() instead.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (527,38,'SUBSTRING_INDEX','Syntax:\nSUBSTRING_INDEX(str,delim,count)\n\nReturns the substring from string str before count occurrences of the\ndelimiter delim. If count is positive, everything to the left of the\nfinal delimiter (counting from the left) is returned. If count is\nnegative, everything to the right of the final delimiter (counting from\nthe right) is returned. SUBSTRING_INDEX() performs a case-sensitive\nmatch when searching for delim.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', 2);\n        -> \'www.mysql\'\nmysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', -2);\n        -> \'mysql.com\'\n','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (528,18,'CURRENT_ROLE','CURRENT_ROLE()\n\nReturns a utf8 string containing the current active roles for the\ncurrent session, separated by commas, or NONE if there are none. The\nvalue reflects the setting of the sql_quote_show_create system\nvariable.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','GRANT \'r1\', \'r2\' TO \'u1\'@\'localhost\';\nSET DEFAULT ROLE ALL TO \'u1\'@\'localhost\';\n\nmysql> SELECT CURRENT_ROLE();\n+-------------------+\n| CURRENT_ROLE()    |\n+-------------------+\n| `r1`@`%`,`r2`@`%` |\n+-------------------+\nmysql> SET ROLE \'r1\'; SELECT CURRENT_ROLE();\n+----------------+\n| CURRENT_ROLE() |\n+----------------+\n| `r1`@`%`       |\n+----------------+\n','http://dev.mysql.com/doc/refman/8.0/en/information-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (529,12,'ST_X','ST_X(p[, new_x_val])\n\nWith a single argument representing a valid Point object p, ST_X()\nreturns the X-coordinate value of p as a double-precision number.\n\nWith the optional second argument representing a valid X-coordinate\nvalue, ST_X() returns a Point object like the first argument with its X\ncoordinate equal to the second argument.\n\nST_X() handles its arguments as described in the introduction to this\nsection.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-point-property-functions.html\n\n','mysql> SELECT ST_X(Point(56.7, 53.34));\n+--------------------------+\n| ST_X(Point(56.7, 53.34)) |\n+--------------------------+\n|                     56.7 |\n+--------------------------+\nmysql> SELECT ST_AsText(ST_X(Point(56.7, 53.34), 10.5));\n+-------------------------------------------+\n| ST_AsText(ST_X(Point(56.7, 53.34), 10.5)) |\n+-------------------------------------------+\n| POINT(10.5 53.34)                         |\n+-------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/gis-point-property-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (530,33,'TIMESTAMPADD','Syntax:\nTIMESTAMPADD(unit,interval,datetime_expr)\n\nAdds the integer expression interval to the date or datetime expression\ndatetime_expr. The unit for interval is given by the unit argument,\nwhich should be one of the following values: MICROSECOND\n(microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or\nYEAR.\n\nThe unit value may be specified using one of keywords as shown, or with\na prefix of SQL_TSI_. For example, DAY and SQL_TSI_DAY both are legal.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMPADD(MINUTE,1,\'2003-01-02\');\n        -> \'2003-01-02 00:01:00\'\nmysql> SELECT TIMESTAMPADD(WEEK,1,\'2003-01-02\');\n        -> \'2003-01-09\'\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (531,4,'TRUNCATE','Syntax:\nTRUNCATE(X,D)\n\nReturns the number X, truncated to D decimal places. If D is 0, the\nresult has no decimal point or fractional part. D can be negative to\ncause D digits left of the decimal point of the value X to become zero.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT TRUNCATE(1.223,1);\n        -> 1.2\nmysql> SELECT TRUNCATE(1.999,1);\n        -> 1.9\nmysql> SELECT TRUNCATE(1.999,0);\n        -> 1\nmysql> SELECT TRUNCATE(-1.999,1);\n        -> -1.9\nmysql> SELECT TRUNCATE(122,-2);\n       -> 100\nmysql> SELECT TRUNCATE(10.28*100,0);\n       -> 1028\n','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (532,28,'SHOW','SHOW has many forms that provide information about databases, tables,\ncolumns, or status information about the server. This section describes\nthose following:\n\nSHOW {BINARY | MASTER} LOGS\nSHOW BINLOG EVENTS [IN \'log_name\'] [FROM pos] [LIMIT [offset,] row_count]\nSHOW CHARACTER SET [like_or_where]\nSHOW COLLATION [like_or_where]\nSHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]\nSHOW CREATE DATABASE db_name\nSHOW CREATE EVENT event_name\nSHOW CREATE FUNCTION func_name\nSHOW CREATE PROCEDURE proc_name\nSHOW CREATE TABLE tbl_name\nSHOW CREATE TRIGGER trigger_name\nSHOW CREATE VIEW view_name\nSHOW DATABASES [like_or_where]\nSHOW ENGINE engine_name {STATUS | MUTEX}\nSHOW [STORAGE] ENGINES\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW EVENTS\nSHOW FUNCTION CODE func_name\nSHOW FUNCTION STATUS [like_or_where]\nSHOW GRANTS FOR user\nSHOW INDEX FROM tbl_name [FROM db_name]\nSHOW MASTER STATUS\nSHOW OPEN TABLES [FROM db_name] [like_or_where]\nSHOW PLUGINS\nSHOW PROCEDURE CODE proc_name\nSHOW PROCEDURE STATUS [like_or_where]\nSHOW PRIVILEGES\nSHOW [FULL] PROCESSLIST\nSHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]\nSHOW PROFILES\nSHOW RELAYLOG EVENTS [IN \'log_name\'] [FROM pos] [LIMIT [offset,] row_count]\nSHOW SLAVE HOSTS\nSHOW SLAVE STATUS [FOR CHANNEL channel]\nSHOW [GLOBAL | SESSION] STATUS [like_or_where]\nSHOW TABLE STATUS [FROM db_name] [like_or_where]\nSHOW [FULL] TABLES [FROM db_name] [like_or_where]\nSHOW TRIGGERS [FROM db_name] [like_or_where]\nSHOW [GLOBAL | SESSION] VARIABLES [like_or_where]\nSHOW WARNINGS [LIMIT [offset,] row_count]\n\nlike_or_where:\n    LIKE \'pattern\'\n  | WHERE expr\n\nIf the syntax for a given SHOW statement includes a LIKE \'pattern\'\npart, \'pattern\' is a string that can contain the SQL % and _ wildcard\ncharacters. The pattern is useful for restricting statement output to\nmatching values.\n\nSeveral SHOW statements also accept a WHERE clause that provides more\nflexibility in specifying which rows to display. See\nhttp://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (533,28,'SHOW VARIABLES','Syntax:\nSHOW [GLOBAL | SESSION] VARIABLES\n    [LIKE \'pattern\' | WHERE expr]\n\nSHOW VARIABLES shows the values of MySQL system variables (see\nhttp://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html).\nThis statement does not require any privilege. It requires only the\nability to connect to the server.\n\nSystem variable information is also available from these sources:\n\no Performance Schema tables. See\n  http://dev.mysql.com/doc/refman/8.0/en/performance-schema-system-vari\n  able-tables.html.\n\no The mysqladmin variables command. See\n  http://dev.mysql.com/doc/refman/8.0/en/mysqladmin.html.\n\nFor SHOW VARIABLES, a LIKE clause, if present, indicates which variable\nnames to match. A WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nSHOW VARIABLES accepts an optional GLOBAL or SESSION variable scope\nmodifier:\n\no With a GLOBAL modifier, the statement displays global system variable\n  values. These are the values used to initialize the corresponding\n  session variables for new connections to MySQL. If a variable has no\n  global value, no value is displayed.\n\no With a SESSION modifier, the statement displays the system varaible\n  values that are in effect for the current connection. If a variable\n  has no session value, the global value is displayed. LOCAL is a\n  synonym for SESSION.\n\no If no modifier is present, the default is SESSION.\n\nThe scope for each system variable is listed at\nhttp://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nSHOW VARIABLES is subject to a version-dependent display-width limit.\nFor variables with very long values that are not completely displayed,\nuse SELECT as a workaround. For example:\n\nSELECT @@GLOBAL.innodb_data_file_path;\n\nMost system variables can be set at server startup (read-only variables\nsuch as version_comment are exceptions). Many can be changed at runtime\nwith the SET statement. See\nhttp://dev.mysql.com/doc/refman/8.0/en/using-system-variables.html, and\n[HELP SET].\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern. To obtain the row for a\nspecific variable, use a LIKE clause as shown:\n\nSHOW VARIABLES LIKE \'max_join_size\';\nSHOW SESSION VARIABLES LIKE \'max_join_size\';\n\nTo get a list of variables whose name match a pattern, use the %\nwildcard character in a LIKE clause:\n\nSHOW VARIABLES LIKE \'%size%\';\nSHOW GLOBAL VARIABLES LIKE \'%size%\';\n\nWildcard characters can be used in any position within the pattern to\nbe matched. Strictly speaking, because _ is a wildcard that matches any\nsingle character, you should escape it as \\_ to match it literally. In\npractice, this is rarely necessary.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-variables.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show-variables.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (534,28,'BINLOG','Syntax:\nBINLOG \'str\'\n\nBINLOG is an internal-use statement. It is generated by the mysqlbinlog\nprogram as the printable representation of certain events in binary log\nfiles. (See http://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog.html.)\nThe \'str\' value is a base 64-encoded string the that server decodes to\ndetermine the data change indicated by the corresponding event. This\nstatement requires the BINLOG_ADMIN or SUPER privilege.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/binlog.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/binlog.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (535,32,'ST_DISJOINT','ST_Disjoint(g1, g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially disjoint from (does\nnot intersect) g2.\n\nST_Disjoint() handles its arguments as described in the introduction to\nthis section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (536,4,'ATAN2','Syntax:\nATAN(Y,X), ATAN2(Y,X)\n\nReturns the arc tangent of the two variables X and Y. It is similar to\ncalculating the arc tangent of Y / X, except that the signs of both\narguments are used to determine the quadrant of the result.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT ATAN(-2,2);\n        -> -0.78539816339745\nmysql> SELECT ATAN2(PI(),0);\n        -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (537,16,'AND','Syntax:\nAND, &&\n\nLogical AND. Evaluates to 1 if all operands are nonzero and not NULL,\nto 0 if one or more operands are 0, otherwise NULL is returned.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/logical-operators.html\n\n','mysql> SELECT 1 AND 1;\n        -> 1\nmysql> SELECT 1 AND 0;\n        -> 0\nmysql> SELECT 1 AND NULL;\n        -> NULL\nmysql> SELECT 0 AND NULL;\n        -> 0\nmysql> SELECT NULL AND 0;\n        -> 0\n','http://dev.mysql.com/doc/refman/8.0/en/logical-operators.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (538,33,'HOUR','Syntax:\nHOUR(time)\n\nReturns the hour for time. The range of the return value is 0 to 23 for\ntime-of-day values. However, the range of TIME values actually is much\nlarger, so HOUR can return values greater than 23.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT HOUR(\'10:05:03\');\n        -> 10\nmysql> SELECT HOUR(\'272:59:59\');\n        -> 272\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (539,29,'SELECT','Syntax:\nSELECT\n    [ALL | DISTINCT | DISTINCTROW ]\n      [HIGH_PRIORITY]\n      [STRAIGHT_JOIN]\n      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]\n      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]\n    select_expr [, select_expr ...]\n    [FROM table_references\n      [PARTITION partition_list]\n    [WHERE where_condition]\n    [GROUP BY {col_name | expr | position}\n      [ASC | DESC], ... [WITH ROLLUP]]\n    [HAVING where_condition]\n    [WINDOW window_name AS (window_spec)\n        [, window_name AS (window_spec)] ...]\n    [ORDER BY {col_name | expr | position}\n      [ASC | DESC], ...]\n    [LIMIT {[offset,] row_count | row_count OFFSET offset}]\n    [INTO OUTFILE \'file_name\'\n        [CHARACTER SET charset_name]\n        export_options\n      | INTO DUMPFILE \'file_name\'\n      | INTO var_name [, var_name]]\n    [FOR UPDATE | LOCK IN SHARE MODE]]\n    [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] \n      | LOCK IN SHARE MODE]]\n\nSELECT is used to retrieve rows selected from one or more tables, and\ncan include UNION statements and subqueries. See [HELP UNION], and\nhttp://dev.mysql.com/doc/refman/8.0/en/subqueries.html. A SELECT\nstatement can start with a WITH clause to define common table\nexpressions accessible within the SELECT. See\nhttp://dev.mysql.com/doc/refman/8.0/en/with.html.\n\nThe most commonly used clauses of SELECT statements are these:\n\no Each select_expr indicates a column that you want to retrieve. There\n  must be at least one select_expr.\n\no table_references indicates the table or tables from which to retrieve\n  rows. Its syntax is described in [HELP JOIN].\n\no SELECT supports explicit partition selection using the PARTITION with\n  a list of partitions or subpartitions (or both) following the name of\n  the table in a table_reference (see [HELP JOIN]). In this case, rows\n  are selected only from the partitions listed, and any other\n  partitions of the table are ignored. For more information and\n  examples, see\n  http://dev.mysql.com/doc/refman/8.0/en/partitioning-selection.html.\n\n  SELECT ... PARTITION from tables using storage engines such as MyISAM\n  that perform table-level locks (and thus partition locks) lock only\n  the partitions or subpartitions named by the PARTITION option.\n\n  For more information, see Partitioning and Locking\n  (http://dev.mysql.com/doc/refman/5.7/en/partitioning-limitations-lock\n  ing.html).\n\no The WHERE clause, if given, indicates the condition or conditions\n  that rows must satisfy to be selected. where_condition is an\n  expression that evaluates to true for each row to be selected. The\n  statement selects all rows if there is no WHERE clause.\n\n  In the WHERE expression, you can use any of the functions and\n  operators that MySQL supports, except for aggregate (summary)\n  functions. See\n  http://dev.mysql.com/doc/refman/8.0/en/expressions.html, and\n  http://dev.mysql.com/doc/refman/8.0/en/functions.html.\n\nSELECT can also be used to retrieve rows computed without reference to\nany table.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/select.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/select.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (540,8,'JSON_MERGE_PRESERVE()','Syntax:\nJSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)\n\nMerges two or more JSON documents and returns the merged result.\nReturns NULL if any argument is NULL. An error occurs if any argument\nis not a valid JSON document.\n\nMerging takes place according to the following rules. For additional\ninformation, see\nhttp://dev.mysql.com/doc/refman/8.0/en/json.html#json-normalization.\n\no Adjacent arrays are merged to a single array.\n\no Adjacent objects are merged to a single object.\n\no A scalar value is autowrapped as an array and merged as an array.\n\no An adjacent array and object are merged by autowrapping the object as\n  an array and merging the two arrays.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SELECT JSON_MERGE_PRESERVE(\'[1, 2]\', \'[true, false]\');\n+------------------------------------------------+\n| JSON_MERGE_PRESERVE(\'[1, 2]\', \'[true, false]\') |\n+------------------------------------------------+\n| [1, 2, true, false]                            |\n+------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PRESERVE(\'{"name": "x"}\', \'{"id": 47}\');\n+----------------------------------------------------+\n| JSON_MERGE_PRESERVE(\'{"name": "x"}\', \'{"id": 47}\') |\n+----------------------------------------------------+\n| {"id": 47, "name": "x"}                            |\n+----------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PRESERVE(\'1\', \'true\');\n+----------------------------------+\n| JSON_MERGE_PRESERVE(\'1\', \'true\') |\n+----------------------------------+\n| [1, true]                        |\n+----------------------------------+\n\nmysql> SELECT JSON_MERGE_PRESERVE(\'[1, 2]\', \'{"id": 47}\');\n+---------------------------------------------+\n| JSON_MERGE_PRESERVE(\'[1, 2]\', \'{"id": 47}\') |\n+---------------------------------------------+\n| [1, 2, {"id": 47}]                          |\n+---------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PRESERVE(\'{ "a": 1, "b": 2 }\',\n     >    \'{ "a": 3, "c": 4 }\');\n+--------------------------------------------------------------+\n| JSON_MERGE_PRESERVE(\'{ "a": 1, "b": 2 }\',\'{ "a": 3, "c":4 }\') |\n+--------------------------------------------------------------+\n| {"a": [1, 3], "b": 2, "c": 4}                                |\n+--------------------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PRESERVE(\'{ "a": 1, "b": 2 }\',\'{ "a": 3, "c": 4 }\',\n     >    \'{ "a": 5, "d": 6 }\');\n+----------------------------------------------------------------------------------+\n| JSON_MERGE_PRESERVE(\'{ "a": 1, "b": 2 }\',\'{ "a": 3, "c": 4 }\',\'{ "a": 5, "d": 6 }\') |\n+----------------------------------------------------------------------------------+\n| {"a": [1, 3, 5], "b": 2, "c": 4, "d": 6}                                         |\n+----------------------------------------------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (541,17,'GROUP_CONCAT','Syntax:\nGROUP_CONCAT(expr)\n\nThis function returns a string result with the concatenated non-NULL\nvalues from a group. It returns NULL if there are no non-NULL values.\nThe full syntax is as follows:\n\nGROUP_CONCAT([DISTINCT] expr [,expr ...]\n             [ORDER BY {unsigned_integer | col_name | expr}\n                 [ASC | DESC] [,col_name ...]]\n             [SEPARATOR str_val])\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html\n\n','mysql> SELECT student_name,\n         GROUP_CONCAT(test_score)\n       FROM student\n       GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (542,18,'BENCHMARK','Syntax:\nBENCHMARK(count,expr)\n\nThe BENCHMARK() function executes the expression expr repeatedly count\ntimes. It may be used to time how quickly MySQL processes the\nexpression. The result value is always 0. The intended use is from\nwithin the mysql client, which reports query execution times:\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> SELECT BENCHMARK(1000000,AES_ENCRYPT(\'hello\',\'goodbye\'));\n+---------------------------------------------------+\n| BENCHMARK(1000000,AES_ENCRYPT(\'hello\',\'goodbye\')) |\n+---------------------------------------------------+\n|                                                 0 |\n+---------------------------------------------------+\n1 row in set (4.74 sec)\n','http://dev.mysql.com/doc/refman/8.0/en/information-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (543,38,'FROM_BASE64','Syntax:\nFROM_BASE64(str)\n\nTakes a string encoded with the base-64 encoded rules used by\nTO_BASE64() and returns the decoded result as a binary string. The\nresult is NULL if the argument is NULL or not a valid base-64 string.\nSee the description of TO_BASE64() for details about the encoding and\ndecoding rules.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT TO_BASE64(\'abc\'), FROM_BASE64(TO_BASE64(\'abc\'));\n        -> \'JWJj\', \'abc\'\n','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (544,28,'SHOW ENGINE','Syntax:\nSHOW ENGINE engine_name {STATUS | MUTEX}\n\nSHOW ENGINE displays operational information about a storage engine. It\nrequires the PROCESS privilege. The statement has these variants:\n\nSHOW ENGINE INNODB STATUS\nSHOW ENGINE INNODB MUTEX\nSHOW ENGINE PERFORMANCE_SCHEMA STATUS\n\nSHOW ENGINE INNODB STATUS displays extensive information from the\nstandard InnoDB Monitor about the state of the InnoDB storage engine.\nFor information about the standard monitor and other InnoDB Monitors\nthat provide information about InnoDB processing, see\nhttp://dev.mysql.com/doc/refman/8.0/en/innodb-monitors.html.\n\nSHOW ENGINE INNODB MUTEX displays InnoDB mutex and rw-lock statistics.\n\n*Note*:\n\nInnoDB mutexes and rwlocks can also be monitored using Performance\nSchema tables. See\nhttp://dev.mysql.com/doc/refman/8.0/en/monitor-innodb-mutex-waits-perfo\nrmance-schema.html.\n\nMutex statistics collection is configured dynamically using the\nfollowing options:\n\no To enable the collection of mutex statistics, run:\n\nSET GLOBAL innodb_monitor_enable=\'latch\';\n\no To reset mutex statistics, run:\n\nSET GLOBAL innodb_monitor_reset=\'latch\';\n\no To disable the collection of mutex statistics, run:\n\nSET GLOBAL innodb_monitor_disable=\'latch\';\n\nCollection of mutex statistics for SHOW ENGINE INNODB MUTEX can also be\nenabled by setting innodb_monitor_enable=\'all\', or disabled by setting\ninnodb_monitor_disable=\'all\'.\n\nSHOW ENGINE INNODB MUTEX output has the following columns:\n\no Type\n\n  Always InnoDB.\n\no Name\n\n  For mutexes, the Name field reports only the mutex name. For rwlocks,\n  the Name field reports the source file where the rwlock is\n  implemented, and the line number in the file where the rwlock is\n  created. The line number is specific to your version of MySQL.\n\no Status\n\n  The mutex status. This field reports the number of spins, waits, and\n  calls. Statistics for low-level operating system mutexes, which are\n  implemented outside of InnoDB, are not reported.\n\n  o spins indicates the number of spins.\n\n  o waits indicates the number of mutex waits.\n\n  o calls indicates how many times the mutex was requested.\n\nSHOW ENGINE INNODB MUTEX skips the mutexes and rw-locks of buffer pool\nblocks, as the amount of output can be overwhelming on systems with a\nlarge buffer pool. (There is one mutex and one rw-lock in each 16K\nbuffer pool block, and there are 65,536 blocks per gigabyte.) SHOW\nENGINE INNODB MUTEX also does not list any mutexes or rw-locks that\nhave never been waited on (os_waits=0). Thus, SHOW ENGINE INNODB MUTEX\nonly displays information about mutexes and rw-locks outside of the\nbuffer pool that have caused at least one OS-level wait.\n\nUse SHOW ENGINE PERFORMANCE_SCHEMA STATUS to inspect the internal\noperation of the Performance Schema code:\n\nmysql> SHOW ENGINE PERFORMANCE_SCHEMA STATUS\\G\n...\n*************************** 3. row ***************************\n  Type: performance_schema\n  Name: events_waits_history.size\nStatus: 76\n*************************** 4. row ***************************\n  Type: performance_schema\n  Name: events_waits_history.count\nStatus: 10000\n*************************** 5. row ***************************\n  Type: performance_schema\n  Name: events_waits_history.memory\nStatus: 760000\n...\n*************************** 57. row ***************************\n  Type: performance_schema\n  Name: performance_schema.memory\nStatus: 26459600\n...\n\nThis statement is intended to help the DBA understand the effects that\ndifferent Performance Schema options have on memory requirements.\n\nName values consist of two parts, which name an internal buffer and a\nbuffer attribute, respectively. Interpret buffer names as follows:\n\no An internal buffer that is not exposed as a table is named within\n  parentheses. Examples: (pfs_cond_class).size,\n  (pfs_mutex_class).memory.\n\no An internal buffer that is exposed as a table in the\n  performance_schema database is named after the table, without\n  parentheses. Examples: events_waits_history.size,\n  mutex_instances.count.\n\no A value that applies to the Performance Schema as a whole begins with\n  performance_schema. Example: performance_schema.memory.\n\nBuffer attributes have these meanings:\n\no size is the size of the internal record used by the implementation,\n  such as the size of a row in a table. size values cannot be changed.\n\no count is the number of internal records, such as the number of rows\n  in a table. count values can be changed using Performance Schema\n  configuration options.\n\no For a table, tbl_name.memory is the product of size and count. For\n  the Performance Schema as a whole, performance_schema.memory is the\n  sum of all the memory used (the sum of all other memory values).\n\nIn some cases, there is a direct relationship between a Performance\nSchema configuration parameter and a SHOW ENGINE value. For example,\nevents_waits_history_long.count corresponds to\nperformance_schema_events_waits_history_long_size. In other cases, the\nrelationship is more complex. For example, events_waits_history.count\ncorresponds to performance_schema_events_waits_history_size (the number\nof rows per thread) multiplied by\nperformance_schema_max_thread_instances ( the number of threads).\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/show-engine.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/show-engine.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (545,15,'INTERNAL_KEYS_DISABLED','INTERNAL_KEYS_DISABLED(ARGS)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (546,15,'NAME_CONST','Syntax:\nNAME_CONST(name,value)\n\nReturns the given value. When used to produce a result set column,\nNAME_CONST() causes the column to have the given name. The arguments\nshould be constants.\n\nmysql> SELECT NAME_CONST(\'myname\', 14);\n+--------+\n| myname |\n+--------+\n|     14 |\n+--------+\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (547,15,'RELEASE_LOCK','Syntax:\nRELEASE_LOCK(str)\n\nReleases the lock named by the string str that was obtained with\nGET_LOCK(). Returns 1 if the lock was released, 0 if the lock was not\nestablished by this thread (in which case the lock is not released),\nand NULL if the named lock did not exist. The lock does not exist if it\nwas never obtained by a call to GET_LOCK() or if it has previously been\nreleased.\n\nThe DO statement is convenient to use with RELEASE_LOCK(). See [HELP\nDO].\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (548,33,'WEEKDAY','Syntax:\nWEEKDAY(date)\n\nReturns the weekday index for date (0 = Monday, 1 = Tuesday, ... 6 =\nSunday).\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKDAY(\'2008-02-03 22:23:00\');\n        -> 6\nmysql> SELECT WEEKDAY(\'2007-11-06\');\n        -> 1\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (549,33,'TIME_TO_SEC','Syntax:\nTIME_TO_SEC(time)\n\nReturns the time argument, converted to seconds.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_TO_SEC(\'22:23:00\');\n        -> 80580\nmysql> SELECT TIME_TO_SEC(\'00:39:38\');\n        -> 2378\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (550,33,'CONVERT_TZ','Syntax:\nCONVERT_TZ(dt,from_tz,to_tz)\n\nCONVERT_TZ() converts a datetime value dt from the time zone given by\nfrom_tz to the time zone given by to_tz and returns the resulting\nvalue. Time zones are specified as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html. This\nfunction returns NULL if the arguments are invalid.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'GMT\',\'MET\');\n        -> \'2004-01-01 13:00:00\'\nmysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'+00:00\',\'+10:00\');\n        -> \'2004-01-01 22:00:00\'\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (551,11,'ALTER RESOURCE GROUP','Syntax:\nALTER RESOURCE GROUP group_name\n    [VCPU [=] vcpu_spec [, vcpu_spec] ...]\n    [THREAD_PRIORITY [=] N]\n    [ENABLE|DISABLE [FORCE]]\n\nvcpu_spec: {N | M - N}\n\nALTER RESOURCE GROUP is used for resource group management (see\nhttp://dev.mysql.com/doc/refman/8.0/en/resource-groups.html). This\nstatement alters modifiable attributes of an existing resource group.\nIt requires the RESOURCE_GROUP_ADMIN privilege.\n\ngroup_name identifies which resource group to alter. If the group does\nnot exist, an error occurs.\n\nThe attributes for CPU affinity, priority, and whether the group is\nenabled can be modified with ALTER RESOURCE GROUP. These attributes are\nspecified the same way as described for CREATE RESOURCE GROUP (see\n[HELP CREATE RESOURCE GROUP]). Only the attributes specified are\naltered. Unspecified attributes retain their current values.\n\nThe FORCE modifier is used with DISABLE. It determines statement\nbehavior if the resource group has any threads assigned to it:\n\no If FORCE is not given, existing threads in the group continue to run\n  until they terminate, but new threads cannot be assigned to the\n  group.\n\no If FORCE is given, existing threads in the group are moved to their\n  respective default group (system threads to SYS_default, user threads\n  to USR_default).\n\nThe name and type attributes are set at group creation time and cannot\nbe modified thereafter with ALTER RESOURCE GROUP.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/alter-resource-group.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/alter-resource-group.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (552,38,'EXPORT_SET','Syntax:\nEXPORT_SET(bits,on,off[,separator[,number_of_bits]])\n\nReturns a string such that for every bit set in the value bits, you get\nan on string and for every bit not set in the value, you get an off\nstring. Bits in bits are examined from right to left (from low-order to\nhigh-order bits). Strings are added to the result from left to right,\nseparated by the separator string (the default being the comma\ncharacter ,). The number of bits examined is given by number_of_bits,\nwhich has a default of 64 if not specified. number_of_bits is silently\nclipped to 64 if larger than 64. It is treated as an unsigned integer,\nso a value of −1 is effectively the same as 64.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT EXPORT_SET(5,\'Y\',\'N\',\',\',4);\n        -> \'Y,N,Y,N\'\nmysql> SELECT EXPORT_SET(6,\'1\',\'0\',\',\',10);\n        -> \'0,1,1,0,0,0,0,0,0,0\'\n','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (553,38,'CAST','Syntax:\nCAST(expr AS type)\n\nThe CAST() function takes an expression of any type and produces a\nresult value of the specified type, similar to CONVERT(). For more\ninformation, see the description of CONVERT().\n\nCAST() is standard SQL syntax.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/cast-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/cast-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (554,38,'SOUNDS LIKE','Syntax:\nexpr1 SOUNDS LIKE expr2\n\nThis is the same as SOUNDEX(expr1) = SOUNDEX(expr2).\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (555,33,'PERIOD_DIFF','Syntax:\nPERIOD_DIFF(P1,P2)\n\nReturns the number of months between periods P1 and P2. P1 and P2\nshould be in the format YYMM or YYYYMM. Note that the period arguments\nP1 and P2 are not date values.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT PERIOD_DIFF(200802,200703);\n        -> 11\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (556,17,'AVG','Syntax:\nAVG([DISTINCT] expr) [over_clause]\n\nReturns the average value of expr. The DISTINCT option can be used to\nreturn the average of the distinct values of expr.\n\nIf there are no matching rows, AVG() returns NULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html; it\ncannot be used with DISTINCT.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html\n\n','mysql> SELECT student_name, AVG(test_score)\n       FROM student\n       GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (557,15,'CAN_ACCESS_VIEW','CAN_ACCESS_VIEW(ARGS)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (558,38,'QUOTE','Syntax:\nQUOTE(str)\n\nQuotes a string to produce a result that can be used as a properly\nescaped data value in an SQL statement. The string is returned enclosed\nby single quotation marks and with each instance of backslash (\\),\nsingle quote (\'), ASCII NUL, and Control+Z preceded by a backslash. If\nthe argument is NULL, the return value is the word "NULL" without\nenclosing single quotation marks.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT QUOTE(\'Don\\\'t!\');\n        -> \'Don\\\'t!\'\nmysql> SELECT QUOTE(NULL);\n        -> NULL\n','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (559,20,'IN','Syntax:\nexpr IN (value,...)\n\nReturns 1 if expr is equal to any of the values in the IN list, else\nreturns 0. If all values are constants, they are evaluated according to\nthe type of expr and sorted. The search for the item then is done using\na binary search. This means IN is very quick if the IN value list\nconsists entirely of constants. Otherwise, type conversion takes place\naccording to the rules described in\nhttp://dev.mysql.com/doc/refman/8.0/en/type-conversion.html, but\napplied to all the arguments.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 2 IN (0,3,5,7);\n        -> 0\nmysql> SELECT \'wefwf\' IN (\'wee\',\'wefwf\',\'weg\');\n        -> 1\n','http://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (560,33,'QUARTER','Syntax:\nQUARTER(date)\n\nReturns the quarter of the year for date, in the range 1 to 4.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT QUARTER(\'2008-04-01\');\n        -> 2\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (561,28,'HELP COMMAND','Syntax:\nmysql> help search_string\n\nIf you provide an argument to the help command, mysql uses it as a\nsearch string to access server-side help from the contents of the MySQL\nReference Manual. The proper operation of this command requires that\nthe help tables in the mysql database be initialized with help topic\ninformation (see\nhttp://dev.mysql.com/doc/refman/8.0/en/server-side-help-support.html).\n\nIf there is no match for the search string, the search fails:\n\nmysql> help me\n\nNothing found\nPlease try to run \'help contents\' for a list of all accessible topics\n\nUse help contents to see a list of the help categories:\n\nmysql> help contents\nYou asked for help about help category: "Contents"\nFor more information, type \'help <item>\', where <item> is one of the\nfollowing categories:\n   Account Management\n   Administration\n   Data Definition\n   Data Manipulation\n   Data Types\n   Functions\n   Functions and Modifiers for Use with GROUP BY\n   Geographic Features\n   Language Structure\n   Plugins\n   Storage Engines\n   Stored Routines\n   Table Maintenance\n   Transactions\n   Triggers\n\nIf the search string matches multiple items, mysql shows a list of\nmatching topics:\n\nmysql> help logs\nMany help items for your request exist.\nTo make a more specific request, please type \'help <item>\',\nwhere <item> is one of the following topics:\n   SHOW\n   SHOW BINARY LOGS\n   SHOW ENGINE\n   SHOW LOGS\n\nUse a topic as the search string to see the help entry for that topic:\n\nmysql> help show binary logs\nName: \'SHOW BINARY LOGS\'\nDescription:\nSyntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [purge-binary-logs], that shows how\nto determine which logs can be purged.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+\n| Log_name      | File_size |\n+---------------+-----------+\n| binlog.000015 |    724935 |\n| binlog.000016 |    733481 |\n+---------------+-----------+\n\nThe search string can contain the wildcard characters % and _. These\nhave the same meaning as for pattern-matching operations performed with\nthe LIKE operator. For example, HELP rep% returns a list of topics that\nbegin with rep:\n\nmysql> HELP rep%\nMany help items for your request exist.\nTo make a more specific request, please type \'help <item>\',\nwhere <item> is one of the following\ntopics:\n   REPAIR TABLE\n   REPEAT FUNCTION\n   REPEAT LOOP\n   REPLACE\n   REPLACE FUNCTION\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mysql-server-side-help.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/mysql-server-side-help.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (562,8,'JSON_REPLACE','Syntax:\nJSON_REPLACE(json_doc, path, val[, path, val] ...)\n\nReplaces existing values in a JSON document and returns the result.\nReturns NULL if any argument is NULL. An error occurs if the json_doc\nargument is not a valid JSON document or any path argument is not a\nvalid path expression or contains a * or ** wildcard.\n\nThe path-value pairs are evaluated left to right. The document produced\nby evaluating one pair becomes the new value against which the next\npair is evaluated.\n\nA path-value pair for an existing path in the document overwrites the\nexisting document value with the new value. A path-value pair for a\nnonexisting path in the document is ignored and has no effect.\n\nIn MySQL 8.0.4, the optimizer can perform a partial, in-place update of\na JSON column instead of removing the old document and writing the new\ndocument in its entirety to the column. This optimization can be\nperformed for an update statement that uses the JSON_REPLACE() function\nand meets the conditions outlined in\nhttp://dev.mysql.com/doc/refman/8.0/en/json.html#json-partial-updates.\n\nFor a comparison of JSON_INSERT(), JSON_REPLACE(), and JSON_SET(), see\nthe discussion of JSON_SET().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SET @j = \'{ "a": 1, "b": [2, 3]}\';\nmysql> SELECT JSON_REPLACE(@j, \'$.a\', 10, \'$.c\', \'[true, false]\');\n+-----------------------------------------------------+\n| JSON_REPLACE(@j, \'$.a\', 10, \'$.c\', \'[true, false]\') |\n+-----------------------------------------------------+\n| {"a": 10, "b": [2, 3]}                              |\n+-----------------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (563,38,'POSITION','Syntax:\nPOSITION(substr IN str)\n\nPOSITION(substr IN str) is a synonym for LOCATE(substr,str).\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (564,15,'IS_USED_LOCK','Syntax:\nIS_USED_LOCK(str)\n\nChecks whether the lock named str is in use (that is, locked). If so,\nit returns the connection identifier of the client session that holds\nthe lock. Otherwise, it returns NULL.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (565,38,'REGEXP_REPLACE','REGEXP_REPLACE(expr, pat, repl[, pos[, occurrence[, match_type]]])\n\nReplaces occurrences in the string expr that match the regular\nexpression specified by the pattern pat with the replacement string\nrepl, and returns the resulting string. If expr, pat, or repl is NULL,\nthe return value is NULL.\n\nREGEXP_REPLACE() takes these optional arguments:\n\no pos: The position in expr at which to start the search. If omitted,\n  the default is 1.\n\no occurrence: Which occurrence of a match to replace. If omitted, the\n  default is 0 (which means "replace all occurrences").\n\no match_type: A string that specifies how to perform matching. The\n  meaning is as described for REGEXP_LIKE().\n\nFor additional information about how matching occurs, see the\ndescription for REGEXP_LIKE().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/regexp.html\n\n','mysql> SELECT REGEXP_REPLACE(\'a b c\', \'b\', \'X\');\n+-----------------------------------+\n| REGEXP_REPLACE(\'a b c\', \'b\', \'X\') |\n+-----------------------------------+\n| a X c                             |\n+-----------------------------------+\nmysql> SELECT REGEXP_REPLACE(\'abc def ghi\', \'[a-z]+\', \'X\', 1, 3);\n+----------------------------------------------------+\n| REGEXP_REPLACE(\'abc def ghi\', \'[a-z]+\', \'X\', 1, 3) |\n+----------------------------------------------------+\n| abc def X                                          |\n+----------------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/regexp.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (566,37,'ST_SRID','ST_SRID(g[, srid])\n\nWith a single argument representing a valid geometry object g,\nST_SRID() returns an integer indicating the ID of the spatial reference\nsystem (SRS) associated with g.\n\nWith the optional second argument representing a valid SRID value,\nST_SRID() returns an object with the same type as its first argument\nwith an SRID value equal to the second argument.\n\nST_SRID() handles its arguments as described in the introduction to\nthis section, with this exception:\n\no For the single-argument syntax, ST_SRID() returns the geometry SRID\n  even if it refers to an undefined SRS. An ER_SRS_NOT_FOUND error does\n  not occur.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html\n\n','mysql> SET @g = ST_GeomFromText(\'LineString(1 1,2 2)\', 0);\nmysql> SELECT ST_SRID(@g);\n+-------------+\n| ST_SRID(@g) |\n+-------------+\n|           0 |\n+-------------+\nmysql> SET @g = ST_SRID(@g, 4326);\nmysql> SELECT ST_SRID(@g);\n+-------------+\n| ST_SRID(@g) |\n+-------------+\n|        4326 |\n+-------------+\n','http://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (567,11,'ALTER USER','Syntax:\nALTER USER [IF EXISTS]\n    user [auth_option] [, user [auth_option]] ...\n    [REQUIRE {NONE | tls_option [[AND] tls_option] ...}]\n    [WITH resource_option [resource_option] ...]\n    [password_option | lock_option] ...\n\nALTER USER [IF EXISTS]\n    USER() IDENTIFIED BY \'auth_string\'\n\nALTER USER [IF EXISTS]\n    user DEFAULT ROLE\n    {NONE | ALL | role [, role ] ...}\n\nuser:\n    (see )\n\nauth_option: {\n    IDENTIFIED BY \'auth_string\'\n  | IDENTIFIED WITH auth_plugin\n  | IDENTIFIED WITH auth_plugin BY \'auth_string\'\n  | IDENTIFIED WITH auth_plugin AS \'hash_string\'\n}\n\ntls_option: {\n   SSL\n | X509\n | CIPHER \'cipher\'\n | ISSUER \'issuer\'\n | SUBJECT \'subject\'\n}\n\nresource_option: {\n    MAX_QUERIES_PER_HOUR count\n  | MAX_UPDATES_PER_HOUR count\n  | MAX_CONNECTIONS_PER_HOUR count\n  | MAX_USER_CONNECTIONS count\n}\n\npassword_option: {\n    PASSWORD EXPIRE\n  | PASSWORD EXPIRE DEFAULT\n  | PASSWORD EXPIRE NEVER\n  | PASSWORD EXPIRE INTERVAL N DAY\n  | PASSWORD HISTORY DEFAULT\n  | PASSWORD HISTORY N\n  | PASSWORD REUSE INTERVAL DEFAULT\n  | PASSWORD REUSE INTERVAL N DAY\n}\n\nlock_option: {\n    ACCOUNT LOCK\n  | ACCOUNT UNLOCK\n}\n\nThe ALTER USER statement modifies MySQL accounts. It enables\nauthentication, SSL/TLS, resource-limit, and password-management\nproperties to be modified for existing accounts, and enables account\nlocking and unlocking.\n\nExcept for the DEFAULT ROLE syntax, ALTER USER requires the global\nCREATE USER privilege, or the UPDATE privilege for the mysql database.\nFor DEFAULT ROLE, ALTER USER requires these privileges:\n\no Setting the default roles for another user requires the global CREATE\n  USER privilege, or the UPDATE privilege for the mysql.default_roles\n  system table.\n\no Setting the default roles for yourself requires no special\n  privileges, as long as the roles you want as the default have been\n  granted to you.\n\nWhen the read_only system variable is enabled, ALTER USER additionally\nrequires the CONNECTION_ADMIN or SUPER privilege.\n\nBy default, an error occurs if you try to modify a user that does not\nexist. If the IF EXISTS clause is given, the statement produces a\nwarning for each named user that does not exist, rather than an error.\n\nThe statement is written to the binary log if it succeeds, but not if\nit fails; in that case, rollback occurs and no changes are made. A\nstatement written to the binary log includes all named users. If the IF\nEXISTS clause is given, this includes even users that do not exist and\nwere not altered.\n\nIf the original statement changes the credentials for a user, the\nstatement written to the binary log specifies the applicable\nauthentication plugin for that user, determined as follows:\n\no The plugin named in the original statement, if one was specified.\n\no Otherwise, the plugin associated with the user account if the user\n  exists, or the default authentication plugin if the user does not\n  exist. (If the statement written to the binary log must specify a\n  particular authentication plugin for a user, include it in the\n  original statement.)\n\nIf the server adds the default authentication plugin for any users in\nthe statement written to the binary log, it writes a warning to the\nerror log naming those users.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/alter-user.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/alter-user.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (568,13,'DES_ENCRYPT','Syntax:\nDES_ENCRYPT(str[,{key_num|key_str}])\n\nThis function was removed in MySQL 8.0.3.\n\nConsider using AES_ENCRYPT() and AES_DECRYPT() instead.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (569,4,'CEIL','Syntax:\nCEIL(X)\n\nCEIL() is a synonym for CEILING().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (570,8,'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS','Syntax:\nWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(gtid_set[, timeout][,channel])\n\nWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() is similar to\nWAIT_FOR_EXECUTED_GTID_SET() in that it waits until all of the\ntransactions whose global transaction identifiers are contained in\ngtid_set have been applied, or until timeout seconds have elapsed,\nwhichever occurs first. However, WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()\napplies to a specific replication channel, and stops only after the\ntransactions have been applied on the specified channel, for which the\napplier must be running. In contrast, WAIT_FOR_EXECUTED_GTID_SET()\nstops after the transactions have been applied, regardless of where\nthey were applied (on any replication channel or any user client), and\nwhether or not any replication channels are running.\n\nThe channel option names which replication channel the function applies\nto. If no channel is named and no channels other than the default\nreplication channel exist, the function applies to the default\nreplication channel. If multiple replication channels exist, you must\nspecify a channel as otherwise it is not known which replication\nchannel the function applies to. See\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-channels.html for\nmore information on replication channels.\n\n*Note*:\n\nBecause WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() applies to a specific\nreplication channel, if an expected transaction arrives on a different\nreplication channel or from a user client, for example in a failover or\nmanual recovery situation, the function can hang indefinitely if no\ntimeout is set. Use WAIT_FOR_EXECUTED_GTID_SET() instead to ensure\ncorrect handling of transactions in these situations.\n\nGTID sets used with WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() are represented\nas strings and must be quoted in the same way as for\nWAIT_FOR_EXECUTED_GTID_SET(). For WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(),\nthe return value for the function is an arbitrary positive number. If\nGTID-based replication is not active (that is, if the value of the\ngtid_mode variable is OFF), then this value is undefined and\nWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() returns NULL. If the slave is not\nrunning then the function also returns NULL.\n\ngtid_mode cannot be changed to OFF while any client is using this\nfunction to wait for GTIDs to be applied.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gtid-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/gtid-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (571,38,'LENGTH','Syntax:\nLENGTH(str)\n\nReturns the length of the string str, measured in bytes. A multibyte\ncharacter counts as multiple bytes. This means that for a string\ncontaining five 2-byte characters, LENGTH() returns 10, whereas\nCHAR_LENGTH() returns 5.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT LENGTH(\'text\');\n        -> 4\n','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (572,38,'WEIGHT_STRING','Syntax:\nWEIGHT_STRING(str [AS {CHAR|BINARY}(N)] [flags])\n\nThis function returns the weight string for the input string. The\nreturn value is a binary string that represents the comparison and\nsorting value of the string. It has these properties:\n\no If WEIGHT_STRING(str1) = WEIGHT_STRING(str2), then str1 = str2 (str1\n  and str2 are considered equal)\n\no If WEIGHT_STRING(str1) < WEIGHT_STRING(str2), then str1 < str2 (str1\n  sorts before str2)\n\nWEIGHT_STRING() is a debugging function intended for internal use. Its\nbehavior can change without notice between MySQL versions. It can be\nused for testing and debugging of collations, especially if you are\nadding a new collation. See\nhttp://dev.mysql.com/doc/refman/8.0/en/adding-collation.html.\n\nThis list briefly summarizes the arguments. More details are given in\nthe discussion following the list.\n\no str: The input string expression.\n\no AS clause: Optional; cast the input string to a given type and\n  length.\n\no flags: Optional; unused.\n\nThe input string, str, is a string expression. If the input is a\nnonbinary (character) string such as a CHAR, VARCHAR, or TEXT value,\nthe return value contains the collation weights for the string. If the\ninput is a binary (byte) string such as a BINARY, VARBINARY, or BLOB\nvalue, the return value is the same as the input (the weight for each\nbyte in a binary string is the byte value). If the input is NULL,\nWEIGHT_STRING() returns NULL.\n\nExamples:\n\nmysql> SET @s = _utf8mb4 \'AB\' COLLATE utf8mb4_0900_ai_ci;\nmysql> SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));\n+------+---------+------------------------+\n| @s   | HEX(@s) | HEX(WEIGHT_STRING(@s)) |\n+------+---------+------------------------+\n| AB   | 4142    | 1C471C60               |\n+------+---------+------------------------+\n\nmysql> SET @s = _utf8mb4 \'ab\' COLLATE utf8mb4_0900_ai_ci;\nmysql> SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));\n+------+---------+------------------------+\n| @s   | HEX(@s) | HEX(WEIGHT_STRING(@s)) |\n+------+---------+------------------------+\n| ab   | 6162    | 1C471C60               |\n+------+---------+------------------------+\n\nmysql> SET @s = CAST(\'AB\' AS BINARY);\nmysql> SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));\n+------+---------+------------------------+\n| @s   | HEX(@s) | HEX(WEIGHT_STRING(@s)) |\n+------+---------+------------------------+\n| AB   | 4142    | 4142                   |\n+------+---------+------------------------+\n\nmysql> SET @s = CAST(\'ab\' AS BINARY);\nmysql> SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));\n+------+---------+------------------------+\n| @s   | HEX(@s) | HEX(WEIGHT_STRING(@s)) |\n+------+---------+------------------------+\n| ab   | 6162    | 6162                   |\n+------+---------+------------------------+\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (573,32,'ST_EQUALS','ST_Equals(g1, g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially equal to g2.\n\nST_Equals() handles its arguments as described in the introduction to\nthis section, except that it does not return NULL for empty geometry\narguments.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','mysql> SET @g1 = Point(1,1), @g2 = Point(2,2);\nmysql> SELECT ST_Equals(@g1, @g1), ST_Equals(@g1, @g2);\n+---------------------+---------------------+\n| ST_Equals(@g1, @g1) | ST_Equals(@g1, @g2) |\n+---------------------+---------------------+\n|                   1 |                   0 |\n+---------------------+---------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (574,40,'ALTER EVENT','Syntax:\nALTER\n    [DEFINER = { user | CURRENT_USER }]\n    EVENT event_name\n    [ON SCHEDULE schedule]\n    [ON COMPLETION [NOT] PRESERVE]\n    [RENAME TO new_event_name]\n    [ENABLE | DISABLE | DISABLE ON SLAVE]\n    [COMMENT \'string\']\n    [DO event_body]\n\nThe ALTER EVENT statement changes one or more of the characteristics of\nan existing event without the need to drop and recreate it. The syntax\nfor each of the DEFINER, ON SCHEDULE, ON COMPLETION, COMMENT, ENABLE /\nDISABLE, and DO clauses is exactly the same as when used with CREATE\nEVENT. (See [HELP CREATE EVENT].)\n\nAny user can alter an event defined on a database for which that user\nhas the EVENT privilege. When a user executes a successful ALTER EVENT\nstatement, that user becomes the definer for the affected event.\n\nALTER EVENT works only with an existing event:\n\nmysql> ALTER EVENT no_such_event \n     >     ON SCHEDULE \n     >       EVERY \'2:3\' DAY_HOUR;\nERROR 1517 (HY000): Unknown event \'no_such_event\'\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/alter-event.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/alter-event.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (575,33,'DATE_SUB','Syntax:\nDATE_SUB(date,INTERVAL expr unit)\n\nSee the description for DATE_ADD().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (576,21,'|','Syntax:\n|\n\nBitwise OR.\n\nThe result type depends on whether the arguments are evaluated as\nbinary strings or numbers:\n\no Binary-string evaluation occurs when the arguments have a binary\n  string type, and at least one of them is not a hexadecimal literal,\n  bit literal, or NULL literal. Numeric evaluation occurs otherwise,\n  with argument conversion to unsigned 64-bit integers as necessary.\n\no Binary-string evaluation produces a binary string of the same length\n  as the arguments. If the arguments have unequal lengths, an\n  ER_INVALID_BITWISE_OPERANDS_SIZE error occurs. Numeric evaluation\n  produces an unsigned 64-bit integer.\n\nFor more information, see the introductory discussion in this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/bit-functions.html\n\n','mysql> SELECT 29 | 15;\n        -> 31\nmysql> SELECT _binary X\'40404040\' | X\'01020304\';\n        -> \'ABCD\'\n','http://dev.mysql.com/doc/refman/8.0/en/bit-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (577,15,'UUID_SHORT','Syntax:\nUUID_SHORT()\n\nReturns a "short" universal identifier as a 64-bit unsigned integer.\nValues returned by UUID_SHORT() differ from the string-format 128-bit\nidentifiers returned by the UUID() function and have different\nuniqueness properties. The value of UUID_SHORT() is guaranteed to be\nunique if the following conditions hold:\n\no The server_id value of the current server is between 0 and 255 and is\n  unique among your set of master and slave servers\n\no You do not set back the system time for your server host between\n  mysqld restarts\n\no You invoke UUID_SHORT() on average fewer than 16 million times per\n  second between mysqld restarts\n\nThe UUID_SHORT() return value is constructed this way:\n\n  (server_id & 255) << 56\n+ (server_startup_time_in_seconds << 24)\n+ incremented_variable++;\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT UUID_SHORT();\n        -> 92395783831158784\n','http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (578,33,'DATEDIFF','Syntax:\nDATEDIFF(expr1,expr2)\n\nDATEDIFF() returns expr1 − expr2 expressed as a value in days from\none date to the other. expr1 and expr2 are date or date-and-time\nexpressions. Only the date parts of the values are used in the\ncalculation.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT DATEDIFF(\'2007-12-31 23:59:59\',\'2007-12-30\');\n        -> 1\nmysql> SELECT DATEDIFF(\'2010-11-30 23:59:59\',\'2010-12-31\');\n        -> -31\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (579,40,'DROP PROCEDURE','Syntax:\nDROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name\n\nThis statement is used to drop a stored procedure or function. That is,\nthe specified routine is removed from the server. You must have the\nALTER ROUTINE privilege for the routine. (If the\nautomatic_sp_privileges system variable is enabled, that privilege and\nEXECUTE are granted automatically to the routine creator when the\nroutine is created and dropped from the creator when the routine is\ndropped. See\nhttp://dev.mysql.com/doc/refman/8.0/en/stored-routines-privileges.html.\n)\n\nThe IF EXISTS clause is a MySQL extension. It prevents an error from\noccurring if the procedure or function does not exist. A warning is\nproduced that can be viewed with SHOW WARNINGS.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/drop-procedure.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/drop-procedure.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (580,8,'ST_LATFROMGEOHASH','ST_LatFromGeoHash(geohash_str)\n\nReturns the latitude from a geohash string value, as a double-precision\nnumber in the range [−90, 90].\n\nThe ST_LatFromGeoHash() decoding function reads no more than 433\ncharacters from the geohash_str argument. That represents the upper\nlimit on information in the internal representation of coordinate\nvalues. Characters past the 433rd are ignored, even if they are\notherwise illegal and produce an error.\n\nST_LatFromGeoHash() handles its arguments as described in the\nintroduction to this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-geohash-functions.html\n\n','mysql> SELECT ST_LatFromGeoHash(ST_GeoHash(45,-20,10));\n+------------------------------------------+\n| ST_LatFromGeoHash(ST_GeoHash(45,-20,10)) |\n+------------------------------------------+\n|                                      -20 |\n+------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/spatial-geohash-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (581,8,'ST_GEOMFROMGEOJSON','ST_GeomFromGeoJSON(str [, options [, srid]])\n\nParses a string str representing a GeoJSON object and returns a\ngeometry.\n\nIf any argument is NULL, the return value is NULL. If any non-NULL\nargument is invalid, an error occurs.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/spatial-geojson-functions.html\n\n','mysql> SET @json = \'{ "type": "Point", "coordinates": [102.0, 0.0]}\';\nmysql> SELECT ST_AsText(ST_GeomFromGeoJSON(@json));\n+--------------------------------------+\n| ST_AsText(ST_GeomFromGeoJSON(@json)) |\n+--------------------------------------+\n| POINT(102 0)                         |\n+--------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/spatial-geojson-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (582,6,'INSTALL PLUGIN','Syntax:\nINSTALL PLUGIN plugin_name SONAME \'shared_library_name\'\n\nThis statement installs a server plugin. It requires the INSERT\nprivilege for the mysql.plugin system table.\n\nplugin_name is the name of the plugin as defined in the plugin\ndescriptor structure contained in the library file (see\nhttp://dev.mysql.com/doc/refman/8.0/en/plugin-data-structures.html).\nPlugin names are not case-sensitive. For maximal compatibility, plugin\nnames should be limited to ASCII letters, digits, and underscore\nbecause they are used in C source files, shell command lines, M4 and\nBourne shell scripts, and SQL environments.\n\nshared_library_name is the name of the shared library that contains the\nplugin code. The name includes the file name extension (for example,\nlibmyplugin.so, libmyplugin.dll, or libmyplugin.dylib).\n\nThe shared library must be located in the plugin directory (the\ndirectory named by the plugin_dir system variable). The library must be\nin the plugin directory itself, not in a subdirectory. By default,\nplugin_dir is the plugin directory under the directory named by the\npkglibdir configuration variable, but it can be changed by setting the\nvalue of plugin_dir at server startup. For example, set its value in a\nmy.cnf file:\n\n[mysqld]\nplugin_dir=/path/to/plugin/directory\n\nIf the value of plugin_dir is a relative path name, it is taken to be\nrelative to the MySQL base directory (the value of the basedir system\nvariable).\n\nINSTALL PLUGIN loads and initializes the plugin code to make the plugin\navailable for use. A plugin is initialized by executing its\ninitialization function, which handles any setup that the plugin must\nperform before it can be used. When the server shuts down, it executes\nthe deinitialization function for each plugin that is loaded so that\nthe plugin has a chance to perform any final cleanup.\n\nINSTALL PLUGIN also registers the plugin by adding a line that\nindicates the plugin name and library file name to the mysql.plugin\ntable. At server startup, the server loads and initializes any plugin\nthat is listed in the mysql.plugin table. This means that a plugin is\ninstalled with INSTALL PLUGIN only once, not every time the server\nstarts. Plugin loading at startup does not occur if the server is\nstarted with the --skip-grant-tables option.\n\nA plugin library can contain multiple plugins. For each of them to be\ninstalled, use a separate INSTALL PLUGIN statement. Each statement\nnames a different plugin, but all of them specify the same library\nname.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/install-plugin.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/install-plugin.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (583,25,'DECLARE CURSOR','Syntax:\nDECLARE cursor_name CURSOR FOR select_statement\n\nThis statement declares a cursor and associates it with a SELECT\nstatement that retrieves the rows to be traversed by the cursor. To\nfetch the rows later, use a FETCH statement. The number of columns\nretrieved by the SELECT statement must match the number of output\nvariables specified in the FETCH statement.\n\nThe SELECT statement cannot have an INTO clause.\n\nCursor declarations must appear before handler declarations and after\nvariable and condition declarations.\n\nA stored program may contain multiple cursor declarations, but each\ncursor declared in a given block must have a unique name. For an\nexample, see http://dev.mysql.com/doc/refman/8.0/en/cursors.html.\n\nFor information available through SHOW statements, it is possible in\nmany cases to obtain equivalent information by using a cursor with an\nINFORMATION_SCHEMA table.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/declare-cursor.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/declare-cursor.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (584,29,'LOAD DATA','Syntax:\nLOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE \'file_name\'\n    [REPLACE | IGNORE]\n    INTO TABLE tbl_name\n    [PARTITION (partition_name [, partition_name] ...)]\n    [CHARACTER SET charset_name]\n    [{FIELDS | COLUMNS}\n        [TERMINATED BY \'string\']\n        [[OPTIONALLY] ENCLOSED BY \'char\']\n        [ESCAPED BY \'char\']\n    ]\n    [LINES\n        [STARTING BY \'string\']\n        [TERMINATED BY \'string\']\n    ]\n    [IGNORE number {LINES | ROWS}]\n    [(col_name_or_user_var\n        [, col_name_or_user_var] ...)]\n    [SET col_name={expr | DEFAULT},\n        [, col_name={expr | DEFAULT}] ...]\n\nThe LOAD DATA INFILE statement reads rows from a text file into a table\nat a very high speed. LOAD DATA INFILE is the complement of SELECT ...\nINTO OUTFILE. (See\nhttp://dev.mysql.com/doc/refman/8.0/en/select-into.html.) To write data\nfrom a table to a file, use SELECT ... INTO OUTFILE. To read the file\nback into a table, use LOAD DATA INFILE. The syntax of the FIELDS and\nLINES clauses is the same for both statements. Both clauses are\noptional, but FIELDS must precede LINES if both are specified.\n\nYou can also load data files by using the mysqlimport utility; it\noperates by sending a LOAD DATA INFILE statement to the server. The\n--local option causes mysqlimport to read data files from the client\nhost. You can specify the --compress option to get better performance\nover slow networks if the client and server support the compressed\nprotocol. See http://dev.mysql.com/doc/refman/8.0/en/mysqlimport.html.\n\nFor more information about the efficiency of INSERT versus LOAD DATA\nINFILE and speeding up LOAD DATA INFILE, see\nhttp://dev.mysql.com/doc/refman/8.0/en/insert-optimization.html.\n\nThe file name must be given as a literal string. On Windows, specify\nbackslashes in path names as forward slashes or doubled backslashes.\nThe character_set_filesystem system variable controls the\ninterpretation of the file name.\n\nLOAD DATA supports explicit partition selection using the PARTITION\noption with a list of one or more comma-separated names of partitions,\nsubpartitions, or both. When this option is used, if any rows from the\nfile cannot be inserted into any of the partitions or subpartitions\nnamed in the list, the statement fails with the error Found a row not\nmatching the given partition set. For more information and examples,\nsee http://dev.mysql.com/doc/refman/8.0/en/partitioning-selection.html.\n\nFor partitioned tables using storage engines that employ table locks,\nsuch as MyISAM, LOAD DATA cannot prune any partition locks. This does\nnot apply to tables using storage engines which employ row-level\nlocking, such as InnoDB. For more information, see Partitioning and\nLocking\n(http://dev.mysql.com/doc/refman/5.7/en/partitioning-limitations-lockin\ng.html).\n\nThe server uses the character set indicated by the\ncharacter_set_database system variable to interpret the information in\nthe file. SET NAMES and the setting of character_set_client do not\naffect interpretation of input. If the contents of the input file use a\ncharacter set that differs from the default, it is usually preferable\nto specify the character set of the file by using the CHARACTER SET\nclause. A character set of binary specifies "no conversion."\n\nLOAD DATA INFILE interprets all fields in the file as having the same\ncharacter set, regardless of the data types of the columns into which\nfield values are loaded. For proper interpretation of file contents,\nyou must ensure that it was written with the correct character set. For\nexample, if you write a data file with mysqldump -T or by issuing a\nSELECT ... INTO OUTFILE statement in mysql, be sure to use a\n--default-character-set option so that output is written in the\ncharacter set to be used when the file is loaded with LOAD DATA INFILE.\n\n*Note*:\n\nIt is not possible to load data files that use the ucs2, utf16,\nutf16le, or utf32 character set.\n\nIf you use LOW_PRIORITY, execution of the LOAD DATA statement is\ndelayed until no other clients are reading from the table. This affects\nonly storage engines that use only table-level locking (such as MyISAM,\nMEMORY, and MERGE).\n\nIf you specify CONCURRENT with a MyISAM table that satisfies the\ncondition for concurrent inserts (that is, it contains no free blocks\nin the middle), other threads can retrieve data from the table while\nLOAD DATA is executing. This option affects the performance of LOAD\nDATA a bit, even if no other thread is using the table at the same\ntime.\n\nWith row-based replication, CONCURRENT is replicated regardless of\nMySQL version. With statement-based replication CONCURRENT is not\nreplicated prior to MySQL 5.5.1 (see Bug #34628). For more information,\nsee\nhttp://dev.mysql.com/doc/refman/8.0/en/replication-features-load-data.h\ntml.\n\nThe LOCAL keyword affects expected location of the file and error\nhandling, as described later. LOCAL works only if your server and your\nclient both have been configured to permit it. For example, if mysqld\nwas started with the local_infile system variable disabled, LOCAL does\nnot work. See\nhttp://dev.mysql.com/doc/refman/8.0/en/load-data-local.html.\n\nThe LOCAL keyword affects where the file is expected to be found:\n\no If LOCAL is specified, the file is read by the client program on the\n  client host and sent to the server. The file can be given as a full\n  path name to specify its exact location. If given as a relative path\n  name, the name is interpreted relative to the directory in which the\n  client program was started.\n\n  When using LOCAL with LOAD DATA, a copy of the file is created in the\n  server\'s temporary directory. This is not the directory determined by\n  the value of tmpdir or slave_load_tmpdir, but rather the operating\n  system\'s temporary directory, and is not configurable in the MySQL\n  Server. (Typically the system temporary directory is /tmp on Linux\n  systems and C:\\WINDOWS\\TEMP on Windows.) Lack of sufficient space for\n  the copy in this directory can cause the LOAD DATA LOCAL statement to\n  fail.\n\no If LOCAL is not specified, the file must be located on the server\n  host and is read directly by the server. The server uses the\n  following rules to locate the file:\n\n  o If the file name is an absolute path name, the server uses it as\n    given.\n\n  o If the file name is a relative path name with one or more leading\n    components, the server searches for the file relative to the\n    server\'s data directory.\n\n  o If a file name with no leading components is given, the server\n    looks for the file in the database directory of the default\n    database.\n\nIn the non-LOCAL case, these rules mean that a file named as\n./myfile.txt is read from the server\'s data directory, whereas the file\nnamed as myfile.txt is read from the database directory of the default\ndatabase. For example, if db1 is the default database, the following\nLOAD DATA statement reads the file data.txt from the database directory\nfor db1, even though the statement explicitly loads the file into a\ntable in the db2 database:\n\nLOAD DATA INFILE \'data.txt\' INTO TABLE db2.my_table;\n\n*Note*:\n\nThe server also use the non-LOCAL rules to locate .sdi files for the\nIMPORT TABLE statement.\n\nNon-LOCAL load operations read text files located on the server. For\nsecurity reasons, such operations require that you have the FILE\nprivilege. See\nhttp://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html. Also,\nnon-LOCAL load operations are subject to the secure_file_priv system\nvariable setting. If the variable value is a nonempty directory name,\nthe file to be loaded must be located in that directory. If the\nvariable value is empty (which is insecure), the file need only be\nreadable by the server.\n\nUsing LOCAL is a bit slower than letting the server access the files\ndirectly, because the contents of the file must be sent over the\nconnection by the client to the server. On the other hand, you do not\nneed the FILE privilege to load local files.\n\nLOCAL also affects error handling:\n\no With LOAD DATA INFILE, data-interpretation and duplicate-key errors\n  terminate the operation.\n\no With LOAD DATA LOCAL INFILE, data-interpretation and duplicate-key\n  errors become warnings and the operation continues because the server\n  has no way to stop transmission of the file in the middle of the\n  operation. For duplicate-key errors, this is the same as if IGNORE is\n  specified. IGNORE is explained further later in this section.\n\nThe REPLACE and IGNORE keywords control handling of input rows that\nduplicate existing rows on unique key values:\n\no If you specify REPLACE, input rows replace existing rows. In other\n  words, rows that have the same value for a primary key or unique\n  index as an existing row. See [HELP REPLACE].\n\no If you specify IGNORE, rows that duplicate an existing row on a\n  unique key value are discarded. For more information, see\n  http://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#ignore-strict-co\n  mparison.\n\no If you do not specify either option, the behavior depends on whether\n  the LOCAL keyword is specified. Without LOCAL, an error occurs when a\n  duplicate key value is found, and the rest of the text file is\n  ignored. With LOCAL, the default behavior is the same as if IGNORE is\n  specified; this is because the server has no way to stop transmission\n  of the file in the middle of the operation.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/load-data.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/load-data.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (585,33,'LOCALTIME','Syntax:\nLOCALTIME, LOCALTIME([fsp])\n\nLOCALTIME and LOCALTIME() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (586,34,'ST_GEOMFROMWKB','ST_GeomFromWKB(wkb[, srid [, options]]), ST_GeometryFromWKB(wkb[, srid\n[, options]])\n\nConstructs a geometry value of any type using its WKB representation\nand SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (587,13,'SHA1','Syntax:\nSHA1(str), SHA(str)\n\nCalculates an SHA-1 160-bit checksum for the string, as described in\nRFC 3174 (Secure Hash Algorithm). The value is returned as a string of\n40 hexadecimal digits, or NULL if the argument was NULL. One of the\npossible uses for this function is as a hash key. See the notes at the\nbeginning of this section about storing hash values efficiently. You\ncan also use SHA1() as a cryptographic function for storing passwords.\nSHA() is synonymous with SHA1().\n\nThe return value is a string in the connection character set.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SELECT SHA1(\'abc\');\n        -> \'a9993e364706816aba3e25717850c26c9cd0d89d\'\n','http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (588,24,'BLOB','BLOB[(M)]\n\nA BLOB column with a maximum length of 65,535 (216 − 1) bytes. Each\nBLOB value is stored using a 2-byte length prefix that indicates the\nnumber of bytes in the value.\n\nAn optional length M can be given for this type. If this is done, MySQL\ncreates the column as the smallest BLOB type large enough to hold\nvalues M bytes long.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (589,13,'PASSWORD','Syntax:\nPASSWORD(str)\n\nThis function was removed in MySQL 8.0.11.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (590,15,'INTERNAL_INDEX_LENGTH','INTERNAL_INDEX_LENGTH(ARGS)\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/internal-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (591,33,'UTC_DATE','Syntax:\nUTC_DATE, UTC_DATE()\n\nReturns the current UTC date as a value in \'YYYY-MM-DD\' or YYYYMMDD\nformat, depending on whether the function is used in a string or\nnumeric context.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_DATE(), UTC_DATE() + 0;\n        -> \'2003-08-14\', 20030814\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (592,18,'ROLES_GRAPHML','ROLES_GRAPHML()\n\nReturns a utf8 string containing a GraphML document representing memory\nrole subgraphs. The ROLE_ADMIN or SUPER privilege is required to see\ncontent in the <graphml> element. Otherwise, the result shows only an\nempty element:\n\nmysql> SELECT ROLES_GRAPHML();\n+---------------------------------------------------+\n| ROLES_GRAPHML()                                   |\n+---------------------------------------------------+\n| <?xml version="1.0" encoding="UTF-8"?><graphml /> |\n+---------------------------------------------------+\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/information-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (593,24,'BIT','BIT[(M)]\n\nA bit-value type. M indicates the number of bits per value, from 1 to\n64. The default is 1 if M is omitted.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (594,9,'XA','Syntax:\nXA {START|BEGIN} xid [JOIN|RESUME]\n\nXA END xid [SUSPEND [FOR MIGRATE]]\n\nXA PREPARE xid\n\nXA COMMIT xid [ONE PHASE]\n\nXA ROLLBACK xid\n\nXA RECOVER [CONVERT XID]\n\nFor XA START, the JOIN and RESUME clauses are not supported.\n\nFor XA END the SUSPEND [FOR MIGRATE] clause is not supported.\n\nEach XA statement begins with the XA keyword, and most of them require\nan xid value. An xid is an XA transaction identifier. It indicates\nwhich transaction the statement applies to. xid values are supplied by\nthe client, or generated by the MySQL server. An xid value has from one\nto three parts:\n\nxid: gtrid [, bqual [, formatID ]]\n\ngtrid is a global transaction identifier, bqual is a branch qualifier,\nand formatID is a number that identifies the format used by the gtrid\nand bqual values. As indicated by the syntax, bqual and formatID are\noptional. The default bqual value is \'\' if not given. The default\nformatID value is 1 if not given.\n\ngtrid and bqual must be string literals, each up to 64 bytes (not\ncharacters) long. gtrid and bqual can be specified in several ways. You\ncan use a quoted string (\'ab\'), hex string (X\'6162\', 0x6162), or bit\nvalue (b\'nnnn\').\n\nformatID is an unsigned integer.\n\nThe gtrid and bqual values are interpreted in bytes by the MySQL\nserver\'s underlying XA support routines. However, while an SQL\nstatement containing an XA statement is being parsed, the server works\nwith some specific character set. To be safe, write gtrid and bqual as\nhex strings.\n\nxid values typically are generated by the Transaction Manager. Values\ngenerated by one TM must be different from values generated by other\nTMs. A given TM must be able to recognize its own xid values in a list\nof values returned by the XA RECOVER statement.\n\nFor XA START xid starts an XA transaction with the given xid value.\nEach XA transaction must have a unique xid value, so the value must not\ncurrently be used by another XA transaction. Uniqueness is assessed\nusing the gtrid and bqual values. All following XA statements for the\nXA transaction must be specified using the same xid value as that given\nin the XA START statement. If you use any of those statements but\nspecify an xid value that does not correspond to some existing XA\ntransaction, an error occurs.\n\nOne or more XA transactions can be part of the same global transaction.\nAll XA transactions within a given global transaction must use the same\ngtrid value in the xid value. For this reason, gtrid values must be\nglobally unique so that there is no ambiguity about which global\ntransaction a given XA transaction is part of. The bqual part of the\nxid value must be different for each XA transaction within a global\ntransaction. (The requirement that bqual values be different is a\nlimitation of the current MySQL XA implementation. It is not part of\nthe XA specification.)\n\nThe XA RECOVER statement returns information for those XA transactions\non the MySQL server that are in the PREPARED state. (See\nhttp://dev.mysql.com/doc/refman/8.0/en/xa-states.html.) The output\nincludes a row for each such XA transaction on the server, regardless\nof which client started it.\n\nXA RECOVER requires the XA_RECOVER_ADMIN privilege. This privilege\nrequirement prevents users from discovering the XID values for\noutstanding prepared XA transactions other than their own. It does not\naffect normal commit or rollback of an XA transaction because the user\nwho started it knows its XID.\n\nXA RECOVER output rows look like this (for an example xid value\nconsisting of the parts \'abc\', \'def\', and 7):\n\nmysql> XA RECOVER;\n+----------+--------------+--------------+--------+\n| formatID | gtrid_length | bqual_length | data   |\n+----------+--------------+--------------+--------+\n|        7 |            3 |            3 | abcdef |\n+----------+--------------+--------------+--------+\n\nThe output columns have the following meanings:\n\no formatID is the formatID part of the transaction xid\n\no gtrid_length is the length in bytes of the gtrid part of the xid\n\no bqual_length is the length in bytes of the bqual part of the xid\n\no data is the concatenation of the gtrid and bqual parts of the xid\n\nXID values may contain nonprintable characters. XA RECOVER permits an\noptional CONVERT XID clause so that clients can request XID values in\nhexadecimal.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/xa-statements.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/xa-statements.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (595,38,'OCTET_LENGTH','Syntax:\nOCTET_LENGTH(str)\n\nOCTET_LENGTH() is a synonym for LENGTH().\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/8.0/en/string-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (596,33,'UTC_TIMESTAMP','Syntax:\nUTC_TIMESTAMP, UTC_TIMESTAMP([fsp])\n\nReturns the current UTC date and time as a value in \'YYYY-MM-DD\nHH:MM:SS\' or YYYYMMDDHHMMSS format, depending on whether the function\nis used in a string or numeric context.\n\nIf the fsp argument is given to specify a fractional seconds precision\nfrom 0 to 6, the return value includes a fractional seconds part of\nthat many digits.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;\n        -> \'2003-08-14 18:08:04\', 20030814180804.000000\n','http://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (597,17,'FIRST_VALUE','FIRST_VALUE(expr) [null_treatment] over_clause\n\nReturns the value of expr from the first row of the window frame.\n\nover_clause is as described in\nhttp://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\nnull_treatment is as described in the section introduction.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','mysql> SELECT\n         time, subject, val,\n         FIRST_VALUE(val)  OVER w AS \'first\',\n         LAST_VALUE(val)   OVER w AS \'last\',\n         NTH_VALUE(val, 2) OVER w AS \'second\',\n         NTH_VALUE(val, 4) OVER w AS \'fourth\'\n       FROM observations\n       WINDOW w AS (PARTITION BY subject ORDER BY time\n                    ROWS UNBOUNDED PRECEDING);\n+----------+---------+------+-------+------+--------+--------+\n| time     | subject | val  | first | last | second | fourth |\n+----------+---------+------+-------+------+--------+--------+\n| 07:00:00 | st113   |   10 |    10 |   10 |   NULL |   NULL |\n| 07:15:00 | st113   |    9 |    10 |    9 |      9 |   NULL |\n| 07:30:00 | st113   |   25 |    10 |   25 |      9 |   NULL |\n| 07:45:00 | st113   |   20 |    10 |   20 |      9 |     20 |\n| 07:00:00 | xh458   |    0 |     0 |    0 |   NULL |   NULL |\n| 07:15:00 | xh458   |   10 |     0 |   10 |     10 |   NULL |\n| 07:30:00 | xh458   |    5 |     0 |    5 |     10 |   NULL |\n| 07:45:00 | xh458   |   30 |     0 |   30 |     10 |     30 |\n| 08:00:00 | xh458   |   25 |     0 |   25 |     10 |     30 |\n+----------+---------+------+-------+------+--------+--------+\n','http://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html');
INSERT INTO help_topic (help_topic_id,help_category_id,name,description,example,url) VALUES (598,13,'AES_ENCRYPT','Syntax:\nAES_ENCRYPT(str,key_str[,init_vector])\n\nAES_ENCRYPT() and AES_DECRYPT() implement encryption and decryption of\ndata using the official AES (Advanced Encryption Standard) algorithm,\npreviously known as "Rijndael." The AES standard permits various key\nlengths. By default these functions implement AES with a 128-bit key\nlength. Key lengths of 196 or 256 bits can be used, as described later.\nThe key length is a trade off between performance and security.\n\nAES_ENCRYPT() encrypts the string str using the key string key_str and\nreturns a binary string containing the encrypted output. AES_DECRYPT()\ndecrypts the encrypted string crypt_str using the key string key_str\nand returns the original cleartext string. If either function argument\nis NULL, the function returns NULL.\n\nThe str and crypt_str arguments can be any length, and padding is\nautomatically added to str so it is a multiple of a block as required\nby block-based algorithms such as AES. This padding is automatically\nremoved by the AES_DECRYPT() function. The length of crypt_str can be\ncalculated using this formula:\n\n16 * (trunc(string_length / 16) + 1)\n\nFor a key length of 128 bits, the most secure way to pass a key to the\nkey_str argument is to create a truly random 128-bit value and pass it\nas a binary value. For example:\n\nINSERT INTO t\nVALUES (1,AES_ENCRYPT(\'text\',UNHEX(\'F3229A0B371ED2D9441B830D21A390C3\')));\n\nA passphrase can be used to generate an AES key by hashing the\npassphrase. For example:\n\nINSERT INTO t\nVALUES (1,AES_ENCRYPT(\'text\', UNHEX(SHA2(\'My secret passphrase\',512))));\n\nDo not pass a password or passphrase directly to crypt_str, hash it\nfirst. Previous versions of this documentation suggested the former\napproach, but it is no longer recommended as the examples shown here\nare more secure.\n\nIf AES_DECRYPT() detects invalid data or incorrect padding, it returns\nNULL. However, it is possible for AES_DECRYPT() to return a non-NULL\nvalue (possibly garbage) if the input data or the key is invalid.\n\nAES_ENCRYPT() and AES_DECRYPT() permit control of the block encryption\nmode and take an optional init_vector initialization vector argument:\n\no The block_encryption_mode system variable controls the mode for\n  block-based encryption algorithms. Its default value is aes-128-ecb,\n  which signifies encryption using a key length of 128 bits and ECB\n  mode. For a description of the permitted values of this variable, see\n  http://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\no The optional init_vector argument provides an initialization vector\n  for block encryption modes that require it.\n\nFor modes that require the optional init_vector argument, it must be 16\nbytes or longer (bytes in excess of 16 are ignored). An error occurs if\ninit_vector is missing.\n\nFor modes that do not require init_vector, it is ignored and a warning\nis generated if it is specified.\n\nA random string of bytes to use for the initialization vector can be\nproduced by calling RANDOM_BYTES(16). For encryption modes that require\nan initialization vector, the same vector must be used for encryption\nand decryption.\n\nURL: http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SET block_encryption_mode = \'aes-256-cbc\';\nmysql> SET @key_str = SHA2(\'My secret passphrase\',512);\nmysql> SET @init_vector = RANDOM_BYTES(16);\nmysql> SET @crypt_str = AES_ENCRYPT(\'text\',@key_str,@init_vector);\nmysql> SELECT AES_DECRYPT(@crypt_str,@key_str,@init_vector);\n+-----------------------------------------------+\n| AES_DECRYPT(@crypt_str,@key_str,@init_vector) |\n+-----------------------------------------------+\n| text                                          |\n+-----------------------------------------------+\n','http://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html');
