| Server IP : 112.74.42.100 / Your IP : 216.73.216.142 Web Server : nginx/1.20.2 System : Linux iZwz96lx4pjqiy84w4hni7Z 5.10.134-17.3.al8.x86_64 #1 SMP Thu Oct 31 14:29:57 CST 2024 x86_64 User : www ( 1000) PHP Version : 8.0.26 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 : ON | Sudo : ON | Pkexec : ON Directory : /www/server/mysql/mysql-test/include/ |
Upload File : |
use strict;
use warnings;
use LWP::Simple;
use DBI;
use Cache::Memcached;
# NOTE: Env variable MEMCACHED_PORT is mandatory
# for this perl script to work.
my $memcached_port=$ENV{'MEMCACHED_PORT'} or die;
my $memd = new Cache::Memcached {
'servers' => [ "127.0.0.1:$memcached_port" ],
'connect_timeout' => 20,
'select_timeout' => 20
};
# /** Retrieve SDI stored in a tablespace for single copy.
# @param[in] type_full SDI type in format "sdi_<number>"
# @param[in] id SDI id
# @param[in] expected_data expected string to compare with SDI retrieved
# from tablespace. */
sub sdi_get_from_copy {
if (scalar(@_) ne 3) {
die "Wrong number of arguments passed."
. " Expected args: (id_full, type, expected_data)\n";
}
my $type_full = $_[0];
my $id = $_[1];
my $expected_data = $_[2];
my $val = $memd->get("$type_full:$id");
my $cmp_result = $expected_data eq $val;
if (!$cmp_result) {
print "input and output mismatch for rec($type_full:$id)";
print "input is $expected_data\n";
print "output is $val\n";
}
}
# /** Inserts SDI into both copies and retrieve SDI stored to compare with the
# given data.
# @param[in] type SDI type (just the number)
# @param[in] id SDI id
# @param[in] data data to be inserted */
sub sdi_set_get {
if (scalar(@_) ne 3) {
die "Wrong number of arguments passed."
. " Expected args: (type, id, data)\n";
}
my $type = $_[0];
my $type_full= "sdi_" . $type;
my $id = $_[1];
my $data = $_[2];
if (!$memd->set("$type_full:$id", $data)) {
print "Error: $type:$id|$data cannot be inserted.\n";
}
# Retrieve back and verify
sdi_get_from_copy($type_full, $id, $data);
}
# /** Removes SDI from both copies and verifies the operation by expecting empty
# output on get.
# @param[in] type SDI type
# @param[in] id SDi id */
sub sdi_remove_get {
if (scalar(@_) ne 2) {
die "Wrong number of arguments passed."
. " Expected args: (id, type)\n";
}
my $type = $_[0];
my $type_full= "sdi_" . $type;
my $id = $_[1];
my $ret = $memd->delete("$type_full:$id");
if (!$ret) {
print "Error: rec($id:$type) cannot be deleted\n";
}
# Retrieve from copy
my $val = $memd->get("$type_full:$id");
if ($val) {
print "Deleted but rec($type:$id) still exists with value:$val\n";
}
}
# /** Retrieve SDI from copy.
# @param[in] type SDI type
# @param[in] id SDI id */
sub sdi_get {
if (scalar(@_) ne 2) {
die "Wrong number of arguments passed."
. " Expected args: (type, id)\n";
}
my $type = $_[0];
my $type_full= "sdi_" . $type;
my $id = $_[1];
my $val = $memd->get("$type_full:$id");
# We don't print type & id because we use TABLE_ID as SDI KEY &
# type.
print "Get rec(type:id) is $val\n";
}
# /** Create SDI index in a tablespace. */
sub sdi_create_index {
$memd->get("sdi_create_");
}
# /** Removes SDI indexes in a tablespace. */
sub sdi_drop_index {
$memd->get("sdi_drop_");
}
# /** Select the table on which SDI operations should happen.
# @param[in] table_name table name */
sub sdi_switch_table {
if (scalar(@_) ne 1) {
die "Wrong number of arguments passed."
. " Expected args: (table_name)\n";
}
my $table_name = $_[0];
$memd->get("\@\@$table_name");
}
# /** Retrieves SDI keys only without data. (1:1|2:4|..) */
sub sdi_get_only_keys {
return $memd->get("sdi_list_");
}
# /** Disconnect the current memcached connection. */
sub sdi_disconnect {
$memd->disconnect_all;
}
# "require sdi_perl_func.pl" says the module should return true and this
# achieved by the below statement
1;