403Webshell
Server IP : 104.21.38.3  /  Your IP : 172.70.208.168
Web Server : Apache
System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64
User : www ( 1000)
PHP Version : 7.4.33
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /www/server/mysql/src/mysql-test/suite/innodb_fts/t/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/server/mysql/src/mysql-test/suite/innodb_fts/t/plugin_debug.test
--source include/have_innodb.inc
--source include/have_debug.inc
--source include/have_simple_parser.inc

# Install fts parser plugin
--replace_regex /\.dll/.so/
eval INSTALL PLUGIN simple_parser SONAME '$SIMPLE_PARSER';

-- echo # Test Part 2: Create Index Test(CREATE TABLE WITH FULLTEXT INDEX)
CREATE TABLE articles (
	id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
	title VARCHAR(200),
	body TEXT,
	FULLTEXT (title, body) WITH PARSER simple_parser
	) ENGINE=InnoDB;

INSERT INTO articles (title, body) VALUES
  ('MySQL Tutorial','DBMS stands for MySQL DataBase ...'),
  ('How To Use MySQL Well','After you went through a ...'),
  ('Optimizing MySQL','In this tutorial we will show ...'),
  ('1001 MySQL Tricks','How to use full-text search engine'),
  ('Go MySQL Tricks','How to use full text search engine');

# Simple term search
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('mysql');

# Test stopword and word len less than fts_min_token_size
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('will go');

-- echo # Test plugin parser tokenizer difference
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('full-text');

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('full text');

# No result here, we get '"mysql' 'database"' by simple parser
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('"mysql database"' IN BOOLEAN MODE);

DROP TABLE articles;

-- echo # Test Part 3: Row Merge Create Index Test(ALTER TABLE ADD FULLTEXT INDEX)
CREATE TABLE articles (
	id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
	title VARCHAR(200),
	body TEXT
	) ENGINE=InnoDB;

INSERT INTO articles (title, body) VALUES
  ('MySQL Tutorial','DBMS stands for MySQL DataBase ...'),
  ('How To Use MySQL Well','After you went through a ...'),
  ('Optimizing MySQL','In this tutorial we will show ...'),
  ('1001 MySQL Tricks','How to use full-text search engine'),
  ('Go MySQL Tricks','How to use full text search engine');

# Create fulltext index
ALTER TABLE articles ADD FULLTEXT INDEX (title, body) WITH PARSER simple_parser;

# Simple term search
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('mysql');

# Test stopword and word len less than fts_min_token_size
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('will go');

-- echo # Test plugin parser tokenizer difference
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('full-text');

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('full text');

# Test query expansion
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('full-text' WITH QUERY EXPANSION);

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('full text' WITH QUERY EXPANSION);

# No result here, we get '"mysql' 'database"' by simple parser
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('"mysql database"' IN BOOLEAN MODE);

DROP TABLE articles;
-- echo # Test Part 3 END

# Use default parser
SET SESSION debug="+d,fts_instrument_use_default_parser";

-- echo # Test Part 4: Create Index Test with Default/Internal Parser
CREATE TABLE articles (
	id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
	title VARCHAR(200),
	body TEXT,
	FULLTEXT (title, body) WITH PARSER simple_parser
	) ENGINE=InnoDB;

INSERT INTO articles (title, body) VALUES
  ('MySQL Tutorial','DBMS stands for MySQL DataBase ...'),
  ('How To Use MySQL Well','After you went through a ...'),
  ('Optimizing MySQL','In this tutorial we will show ...'),
  ('1001 MySQL Tricks','How to use full-text search engine'),
  ('Go MySQL Tricks','How to use full text search engine');

# Simple term search
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('mysql');

# Test stopword and word len less than fts_min_token_size
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('will go');

-- echo # Test plugin parser tokenizer difference
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('full-text');

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('full text');

# Phrase search
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('"mysql database"' IN BOOLEAN MODE);

DROP TABLE articles;

# Disable query parse using plugin parser
-- echo # Test Part 5: Row Merge Create Index Test with Default/Internal Parser
CREATE TABLE articles (
	id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
	title VARCHAR(200),
	body TEXT
	) ENGINE=InnoDB;

INSERT INTO articles (title, body) VALUES
  ('MySQL Tutorial','DBMS stands for MySQL DataBase ...'),
  ('How To Use MySQL Well','After you went through a ...'),
  ('Optimizing MySQL','In this tutorial we will show ...'),
  ('1001 MySQL Tricks','How to use full-text search engine'),
  ('Go MySQL Tricks','How to use full text search engine');

# Create fulltext index
ALTER TABLE articles ADD FULLTEXT INDEX (title, body) WITH PARSER simple_parser;

# Simple term search
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('mysql');

# Test stopword and word len less than fts_min_token_size
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('will go');

-- echo # Test plugin parser tokenizer difference
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('full-text');

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('full text');

# Phrase search
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('"mysql database"' IN BOOLEAN MODE);

DROP TABLE articles;

-- echo # Test Part 6: Test Query Parser with Default/Internal Parser
let $innodb_ft_enable_diag_print_orig = `SELECT @@innodb_ft_enable_diag_print`;
# Enable diag print to print query parse tree
SET GLOBAL innodb_ft_enable_diag_print = 1;

CREATE TABLE articles (
	id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
	title VARCHAR(200),
	body TEXT,
	FULLTEXT (title, body) WITH PARSER simple_parser
	) ENGINE=InnoDB;

INSERT INTO articles (title, body) VALUES
  ('MySQL Tutorial','DBMS stands for MySQL DataBase ...'),
  ('MySQL Tutorial','DBMS stands for MySQL good one DataBase ...'),
  ('How To Use MySQL Well','After you went through a ...'),
  ('Optimizing MySQL','In this tutorial we will show ...'),
  ('1001 MySQL Tricks','How to use full-text search engine');

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('+mysql -database' IN BOOLEAN MODE);

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('>mysql <database ~search' IN BOOLEAN MODE);

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('+(mysql database) -engine' IN BOOLEAN MODE);

# The will be no result because of parsing error.
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('+(mysql database -engine' IN BOOLEAN MODE);

# Test phrase match
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('"mysql"' IN BOOLEAN MODE);

# Test stopword or word less than fts_min_token_size
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('"for mysql"' IN BOOLEAN MODE);

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('"mysql database"' IN BOOLEAN MODE);

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('"full text search"' IN BOOLEAN MODE);

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('"full text search engine"' IN BOOLEAN MODE);

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('+"dbms stands" -good' IN BOOLEAN MODE);

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('+("dbms stands") -good' IN BOOLEAN MODE);

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('+("dbms stands" search) -good' IN BOOLEAN MODE);

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('+("dbms stands" "full text") -good' IN BOOLEAN MODE);

# Test proximity match
# It will be treated as phrase match
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('("msyql database")@3' IN BOOLEAN MODE);

DROP TABLE articles;

SET NAMES utf8;

-- echo # Test Part 7: Test Different Charset
CREATE TABLE articles (
	id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
	title VARCHAR(200),
	body TEXT,
	FULLTEXT (title, body) WITH PARSER simple_parser
	) ENGINE=InnoDB DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;

INSERT INTO articles (title, body) VALUES
  ('数据库 是 数据 的 结构化 集合','它 可以 是 任何 东西'),
  ('从 简单 的 购物清单 到 画展','或 企业网络 中 的 海量信息'),
  ('要 想 将 数据 添加 到 数据库','或 访问、处理 计算机 数据库 中 保存 的 数据'),
  ('需要 使用 数据库 管理系统','计算机 是 处理 大量 数据 的 理想 工具');

SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('数据库');

# Test word len less than fts_min_token_size
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('数据');

# Test wildcard
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('数据*');

# Test operator
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('+数据库 -计算机');

# Test phrase search
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('"计算机 数据库"' IN BOOLEAN MODE);

DROP TABLE articles;

eval SET GLOBAL innodb_ft_enable_diag_print = $innodb_ft_enable_diag_print_orig;

# Disable use default parser
SET SESSION debug="-d,fts_instrument_use_default_parser";

-- echo # Test Part 9:# Abort the operation in dict_create_index_step
# by setting return status of dict_create_index_tree_step() to DB_OUT_OF_MEMORY
# # The newly create dict_index_t should be removed from fts cache

CREATE TABLE articles (
       id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
       title VARCHAR(200),
       body TEXT,
       FULLTEXT (title, body) WITH PARSER simple_parser
) ENGINE=InnoDB;
#
SET SESSION debug="+d,ib_dict_create_index_tree_fail";
--error ER_OUT_OF_RESOURCES
CREATE FULLTEXT INDEX idx ON articles(body);
SET SESSION debug="-d,ib_dict_create_index_tree_fail";
#
DROP TABLE articles;

UNINSTALL PLUGIN simple_parser;

Youez - 2016 - github.com/yon3zu
LinuXploit