403Webshell
Server IP : 172.67.216.182  /  Your IP : 162.158.106.122
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.test
--source include/have_innodb.inc
--source include/have_simple_parser.inc
# Restart is not supported in embedded
--source include/not_embedded.inc

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

-- echo # Test Part 1: Grammar Test
# Create a myisam table and alter it to innodb table
CREATE TABLE articles (
	id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
	title VARCHAR(200),
	FULLTEXT (title) WITH PARSER simple_parser
	) ENGINE=MyISAM;

ALTER TABLE articles ENGINE=InnoDB;

DROP TABLE articles;

# Create a table having a full text index with parser
CREATE TABLE articles (
	id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
	title VARCHAR(200),
	body TEXT,
	comment TEXT,
	FULLTEXT (title) WITH PARSER simple_parser
	) ENGINE=InnoDB;

# Alter table to add a full text index with parser
ALTER TABLE articles ADD FULLTEXT INDEX (body) WITH PARSER simple_parser;

# Create a full text index with parser
CREATE FULLTEXT INDEX ft_index ON articles(comment) WITH PARSER simple_parser;

DROP TABLE articles;

-- 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

-- echo # Test Part 4:crash on commit(before/after)
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;

BEGIN;
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');

--source include/kill_and_restart_mysqld.inc

SELECT COUNT(*) FROM articles;
# Simple term search - no records expected
SELECT * FROM articles WHERE
	MATCH(title, body) AGAINST('mysql');

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');

--source include/kill_and_restart_mysqld.inc

# Simple term search - 4 records expected
SELECT * FROM articles WHERE
         MATCH(title, body) AGAINST('Tricks');
SELECT COUNT(*) FROM articles;
DROP TABLE articles;

-- echo # Test Part 5: Test Uninstall Plugin After Index is Built
# Note: this test should be the last one because we uninstall plugin
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;

# Uninstall plugin
UNINSTALL PLUGIN simple_parser;

-- error ER_PLUGIN_IS_NOT_LOADED
INSERT INTO articles (title, body) VALUES
  ('MySQL Tutorial','DBMS stands for MySQL DataBase ...');

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

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');

# Get warning here
UNINSTALL PLUGIN 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');

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

DROP TABLE articles;
# Uninstall plugin
-- error ER_SP_DOES_NOT_EXIST
UNINSTALL PLUGIN simple_parser;

Youez - 2016 - github.com/yon3zu
LinuXploit