403Webshell
Server IP : 172.67.216.182  /  Your IP : 172.70.208.9
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/large_records.test
--source include/have_innodb.inc
--source include/no_valgrind_without_big.inc

# This test for FTS index with big records
# case a) more words in single record
# b) more words across records

--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings

# Create FTS table
EVAL CREATE TABLE t1 (
        FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, 
        a TEXT,
        b TEXT
        ) ENGINE = InnoDB;

CREATE UNIQUE INDEX FTS_DOC_ID_INDEX on t1(FTS_DOC_ID);

let $counter = 1;
--disable_query_log

# Generate input file using perl
perl;
use strict;
my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/fts_input_data1.txt";
open FH,">$fname";
my $record_counter = 1;
while ($record_counter < 50) { 
   my $word_counter = 1;
   my ($col1,$col2);
   while ($word_counter < 51) {
       $col1 = $col1. "row".$record_counter."col1"."word".$word_counter." ";
       $col2 = $col2. "row".$record_counter."col2"."word".$word_counter." ";
       $word_counter++;
   }
   print FH "$col1,$col2\n";
   $record_counter++;
}
close FH;
EOF

EVAL LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/fts_input_data1.txt' INTO 
TABLE t1 FIELDS TERMINATED BY ',' (a,b);
--enable_query_log
--echo "Loading data using LOAD DATA Command , File <MYSQLTEST_VARDIR>/tmp/fts_input_data1.txt"

# Create the FTS index again
CREATE FULLTEXT INDEX idx on t1 (a,b);

SELECT COUNT(*) FROM t1;

# Select word "tutorial" in the table
SELECT FTS_DOC_ID FROM t1 WHERE MATCH (a,b)
        AGAINST ('row35col2word49' IN NATURAL LANGUAGE MODE);

# boolean mode
SELECT COUNT(*) from t1
WHERE MATCH(a,b) AGAINST("+row5col2word49 +row5col1word49" IN BOOLEAN MODE);
SELECT COUNT(*) from t1
WHERE MATCH(a,b) AGAINST("+row5col2word49" IN BOOLEAN MODE);
SELECT COUNT(*) from t1
WHERE MATCH(a,b) AGAINST("+row35col2word49 +(row35col1word49 row35col2word40)" IN BOOLEAN MODE);
SELECT COUNT(*) from t1
WHERE MATCH(a,b) AGAINST("+row35col2word49 -(row45col2word49)" IN BOOLEAN MODE);
SELECT COUNT(*) from t1
WHERE MATCH(a,b) AGAINST("row5col2word49 row5col2word40" IN BOOLEAN MODE);
SELECT COUNT(*) from t1
WHERE MATCH a,b AGAINST ("+row5col2word* +row5col1word49*" IN BOOLEAN MODE);
SELECT COUNT(*) from t1
WHERE MATCH a,b AGAINST ('"row35col2word49"' IN BOOLEAN MODE);
SELECT COUNT(*) from t1
WHERE MATCH a,b AGAINST ('"ROW35col2WORD49"' IN BOOLEAN MODE);

# query expansion
SELECT COUNT(*) from t1
WHERE MATCH(a,b) AGAINST ("row5col2word49" WITH QUERY EXPANSION);

SELECT FTS_DOC_ID FROM t1
        WHERE MATCH (a,b)
        AGAINST ('"row5col2word48 row5col2word49"@2' IN BOOLEAN MODE);

SELECT * FROM t1
        WHERE MATCH (a,b)
        AGAINST ('"row5col2word48 row5col2word49"@1' IN BOOLEAN MODE);

UPDATE t1 SET a = "using update" , b = "changing fulltext index record", FTS_DOC_ID = FTS_DOC_ID + 10000
WHERE MATCH(a,b) AGAINST("+row5col2word49 +row5col1word49" IN BOOLEAN MODE);

SELECT a,b FROM t1 WHERE MATCH(a,b) AGAINST("+row5col2word49 +row5col1word49" IN BOOLEAN MODE);
SELECT a,b FROM t1 WHERE MATCH(a,b) AGAINST("changing fulltext" IN BOOLEAN MODE);
SELECT a,b FROM t1 WHERE MATCH(a,b) AGAINST("+chang* +fulltext" IN BOOLEAN MODE);

DELETE FROM t1 WHERE MATCH(a,b) AGAINST("+chang* +fulltext" IN BOOLEAN MODE);
SELECT a,b FROM t1 WHERE MATCH(a,b) AGAINST("+chang* +fulltext" IN BOOLEAN MODE);

--remove_file '$MYSQLTEST_VARDIR/tmp/fts_input_data1.txt';
DROP TABLE t1;

#--------------------------------------------------------------------------------------------
# Create FTS table
EVAL CREATE TABLE t1 (
        FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, 
        a TEXT,
        b TEXT
        ) ENGINE = InnoDB;

CREATE UNIQUE INDEX FTS_DOC_ID_INDEX on t1(FTS_DOC_ID); 

let $counter = 1;
--disable_query_log

# Generate input file using perl
perl;
use strict;
my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/fts_input_data2.txt";
open FH,">$fname";
my $record_counter = 1;
while ($record_counter < 101) { 
   my $word_counter = 1;
   my ($col1,$col2);
   while ($word_counter < 50) {
       $col1 = $col1. "row".$record_counter."col1"."word".$word_counter." ";
       $col2 = $col2. "row".$record_counter."col2"."word".$word_counter." ";
       $word_counter++;
   }
   print FH "$col1,$col2\n";
   $record_counter++;
}
close FH;
EOF

EVAL LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/fts_input_data2.txt' 
INTO TABLE t1 FIELDS TERMINATED BY ',' (a,b);
--enable_query_log
--echo "Loading data using LOAD DATA Command , File <MYSQLTEST_VARDIR>/tmp/fts_input_data2.txt"

# Create the FTS index again
CREATE FULLTEXT INDEX idx on t1 (a,b);

SELECT COUNT(*) FROM t1;

SELECT FTS_DOC_ID from t1 WHERE b like '%row300col2word30%';

SELECT FTS_DOC_ID FROM t1 WHERE MATCH (a,b)
        AGAINST ('row35col2word49' IN NATURAL LANGUAGE MODE);

# boolean mode
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+row5col2word49 +row5col1word49" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+row5col2word49" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+row35col2word49 +(row35col1word49 row35col2word40)" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+row35col2word49 -(row45col2word49)" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("row5col2word49 row5col2word40" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH a,b AGAINST ("+row5col2word* +row5col1word49*" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH a,b AGAINST ('"row35col2word49"' IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH a,b AGAINST ('"ROW35col2WORD49"' IN BOOLEAN MODE);

# query expansion
SELECT COUNT(*) from t1 WHERE MATCH(a,b) AGAINST ("row5col2word49" WITH QUERY EXPANSION);

SELECT FTS_DOC_ID FROM t1
        WHERE MATCH (a,b)
        AGAINST ('"row5col2word48 row5col2word49"@2' IN BOOLEAN MODE);

SELECT * FROM t1
        WHERE MATCH (a,b)
        AGAINST ('"row5col2word48 row5col2word49"@1' IN BOOLEAN MODE);

UPDATE t1 SET a = "using update" , b = "changing fulltext index record", FTS_DOC_ID = FTS_DOC_ID + 10000
WHERE MATCH(a,b) AGAINST("+row5col2word49 +row5col1word49" IN BOOLEAN MODE);

SELECT a,b FROM t1
WHERE MATCH(a,b) AGAINST("+row5col2word49 +row5col1word49" IN BOOLEAN MODE);
SELECT a,b FROM t1
WHERE MATCH(a,b) AGAINST("changing fulltext" IN BOOLEAN MODE);
SELECT a,b FROM t1
WHERE MATCH(a,b) AGAINST("+chang* +fulltext" IN BOOLEAN MODE);

DELETE FROM t1 WHERE MATCH(a,b) AGAINST("+chang* +fulltext" IN BOOLEAN MODE);
SELECT a,b FROM t1 WHERE MATCH(a,b) AGAINST("+chang* +fulltext" IN BOOLEAN MODE);

ALTER TABLE t1 DROP INDEX idx;
# Create the FTS index again
CREATE FULLTEXT INDEX idx on t1 (a,b);
UPDATE t1 SET a = NULL , b = NULL, FTS_DOC_ID= 6000 + FTS_DOC_ID;

SELECT COUNT(*) FROM t1 WHERE a IS NULL AND b IS NULL;
ALTER TABLE t1 DROP INDEX idx;
SELECT COUNT(*) FROM t1 WHERE a IS NULL AND b IS NULL;

--remove_file '$MYSQLTEST_VARDIR/tmp/fts_input_data2.txt';
DROP TABLE t1;

#--------------------------------------------------------------------------------------------
# Create FTS table
EVAL CREATE TABLE t1 (
        FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, 
        a TEXT,
        b TEXT
        ) ENGINE = InnoDB;

CREATE UNIQUE INDEX FTS_DOC_ID_INDEX on t1(FTS_DOC_ID); 

let $counter = 1;
--disable_query_log

# Generate input file using perl
perl;
use strict;
my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/fts_input_data3.txt";
open FH,">$fname";
my $record_counter = 1;
while ($record_counter < 101) { 
   my $word_counter = 1;
   my ($col1,$col2);
   while ($word_counter < 50) {
       $col1 = $col1. "samerowword" ." ";
       $col2 = $col2. "samerowword" ." ";
       $word_counter++;
   }
   print FH "$col1,$col2\n";
   $record_counter++;
}
close FH;
EOF

EVAL LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/fts_input_data3.txt' 
INTO TABLE t1 FIELDS TERMINATED BY ',' (a,b);
--enable_query_log
--echo "Loading data using LOAD DATA Command , File <MYSQLTEST_VARDIR>/tmp/fts_input_data3.txt"

# Create the FTS index again
CREATE FULLTEXT INDEX idx on t1 (a,b);

SELECT COUNT(*) FROM t1;

SELECT COUNT(*) from t1 WHERE b like '%samerowword%';

SELECT COUNT(*) FROM t1 WHERE MATCH (a,b)
        AGAINST ('samerowword' IN NATURAL LANGUAGE MODE);

# boolean mode
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+samerowword +samerowword" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+samerowword" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+samerowword -(row45col2word49)" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH a,b AGAINST ("+sameroww" IN BOOLEAN MODE);

# query expansion
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST ("samerowword" WITH QUERY EXPANSION);

UPDATE t1 SET a = "using update" , b = "changing fulltext index record", 
FTS_DOC_ID = FTS_DOC_ID + 10000 
WHERE MATCH(a,b) AGAINST("+samerowword +samerowword" IN BOOLEAN MODE);

SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+samerowword +samerowword" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+samerowword" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("changing fulltext" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+chang* +fulltext" IN BOOLEAN MODE);

DELETE FROM t1 WHERE MATCH(a,b) AGAINST("+chang* +fulltext" IN BOOLEAN MODE);

SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+chang* +fulltext" IN BOOLEAN MODE);

ALTER TABLE t1 DROP INDEX idx;
# Create the FTS index again
CREATE FULLTEXT INDEX idx on t1 (a,b);
UPDATE t1 SET a = NULL , b = NULL ;

SELECT COUNT(*) FROM t1 WHERE a IS NULL AND b IS NULL;
ALTER TABLE t1 DROP INDEX idx;
SELECT COUNT(*) FROM t1 WHERE a IS NULL AND b IS NULL;

--remove_file '$MYSQLTEST_VARDIR/tmp/fts_input_data3.txt';
DROP TABLE t1;

#--------------------------------------------------------------------------------------------
# Create FTS with same word and numbers
EVAL CREATE TABLE t1 (
        FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, 
        a TEXT,
        b TEXT
        ) ENGINE = InnoDB;

CREATE UNIQUE INDEX FTS_DOC_ID_INDEX on t1(FTS_DOC_ID); 


let $counter = 1;
--disable_query_log

# Generate input file using perl
perl;
use strict;
my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/fts_input_data4.txt";
open FH,">$fname";
my $record_counter = 1;
while ($record_counter < 101) { 
   my $word_counter = 1001;
   my ($col1,$col2);
   while ($word_counter < 1101) {
       $col1 = $col1. "samerowword" ." ";
       $col2 = $col2. "$word_counter" ." ";
       $word_counter++;
   }
   print FH "$col1,$col2\n";
   $record_counter++;
}
close FH;
EOF

EVAL LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/fts_input_data4.txt' 
INTO TABLE t1 FIELDS TERMINATED BY ',' (a,b);
--enable_query_log
--echo "Loading data using LOAD DATA Command , File <MYSQLTEST_VARDIR>/tmp/fts_input_data4.txt"

# Create the FTS index again
CREATE FULLTEXT INDEX idx on t1 (a,b);

SELECT COUNT(*) FROM t1;

SELECT COUNT(*) from t1 WHERE a like '%samerowword%';

SELECT COUNT(*) FROM t1 WHERE MATCH (a,b)
        AGAINST ('samerowword' IN NATURAL LANGUAGE MODE);

# boolean mode
SELECT COUNT(*) from t1 WHERE MATCH(a,b) AGAINST("+samerowword +1050" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 WHERE MATCH(a,b) AGAINST("+samerowword" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 WHERE MATCH(a,b) AGAINST("+samerowword -(1050)" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 WHERE MATCH a,b AGAINST ("+2001" IN BOOLEAN MODE);

# query expansion
SELECT COUNT(*) from t1 WHERE MATCH(a,b) AGAINST ("samerowword" WITH QUERY EXPANSION);

UPDATE t1 SET a = "using update" , b = "changing fulltext index record", 
FTS_DOC_ID = FTS_DOC_ID + 10000 
WHERE MATCH(a,b) AGAINST("+samerowword +1050" IN BOOLEAN MODE);

SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+samerowword +1050" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+samerowword" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("changing fulltext" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+chang* +fulltext" IN BOOLEAN MODE);

DELETE FROM t1 
WHERE MATCH(a,b) AGAINST("+chang* +fulltext" IN BOOLEAN MODE);
SELECT COUNT(*) from t1 
WHERE MATCH(a,b) AGAINST("+chang* +fulltext" IN BOOLEAN MODE);

ALTER TABLE t1 DROP INDEX idx;
# Create the FTS index again
CREATE FULLTEXT INDEX idx on t1 (a,b);
UPDATE t1 SET a = NULL , b = NULL ;

SELECT COUNT(*) FROM t1 WHERE a IS NULL AND b IS NULL;
ALTER TABLE t1 DROP INDEX idx;
SELECT COUNT(*) FROM t1 WHERE a IS NULL AND b IS NULL;

--remove_file '$MYSQLTEST_VARDIR/tmp/fts_input_data4.txt';
DROP TABLE t1;


Youez - 2016 - github.com/yon3zu
LinuXploit