You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-05 16:15:50 +03:00
131 lines
2.7 KiB
Bash
Executable File
131 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#
|
|
# Reports the max value from the extent map for the given column.
|
|
#
|
|
|
|
#
|
|
# Initialize variables.
|
|
#
|
|
|
|
if [ -z "$MYSQLCMD" ]; then
|
|
MYSQLCMD="mysql -u root"
|
|
fi
|
|
|
|
#
|
|
# Validate that there are three parameters - schema and table and columnname.
|
|
#
|
|
if [ $# -ne 3 ]; then
|
|
echo ""
|
|
echo "Reports the max value for the given column."
|
|
echo ""
|
|
echo "Parameters:"
|
|
echo " Schema"
|
|
echo " Table"
|
|
echo " Column"
|
|
exit 1
|
|
fi
|
|
db=$1
|
|
table=$2
|
|
column=$3
|
|
|
|
#
|
|
# Validate that the column exists.
|
|
#
|
|
sql="select count(*) from syscolumn where \`schema\`='$db' and tablename='$table' and columnname='$column';"
|
|
count=`$MYSQLCMD calpontsys --skip-column-names -e "$sql;"`
|
|
if [ $count -le 0 ]; then
|
|
echo ""
|
|
echo "$db.$table.$column does not exist in Columnstore."
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
|
|
#
|
|
# Validate that the column type is one that this script supports.
|
|
# Supported Types:
|
|
# 6 int
|
|
# 8 date
|
|
# 9 bigint
|
|
# 11 datetime
|
|
sql="select datatype from syscolumn where \`schema\`='$db' and tablename='$table' and columnname='$column';"
|
|
dataType=`$MYSQLCMD calpontsys --skip-column-names -e "$sql"`
|
|
if [ $dataType -ne 6 ] && [ $dataType -ne 8 ] && [ $dataType -ne 9 ] && [ $dataType -ne 11 ]; then
|
|
echo ""
|
|
echo "The column data type must be an int, bigint, date, or datetime."
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
|
|
#
|
|
# Grab the objectid for the column.
|
|
#
|
|
sql="select objectid from syscolumn where \`schema\`='$db' and tablename='$table' and columnname='$column';"
|
|
objectid=`$MYSQLCMD calpontsys --skip-column-names -e "$sql"`
|
|
|
|
#
|
|
# Set the editem specific parameter if the column is a date or datetime.
|
|
#
|
|
if [ $dataType -eq 8 ]; then
|
|
parm="-t"
|
|
elif [ $dataType -eq 11 ]; then
|
|
parm="-s"
|
|
fi
|
|
|
|
#
|
|
# Use the editem utility to get the min and max value.
|
|
#
|
|
editem -o $objectid $parm | grep max | awk -v dataType=$dataType '
|
|
BEGIN {
|
|
allValid=1;
|
|
foundValidExtent=0;
|
|
}
|
|
{
|
|
if(dataType == 11) {
|
|
state=substr($14, 1, length($14)-1); # Datetime has date and time as two fields.
|
|
thisMin=$6 " " substr($7, 1, length($7)-1);
|
|
thisMax=$9 " " substr($10, 1, length($10)-1);
|
|
}
|
|
else {
|
|
state=substr($12, 1, length($12)-1);
|
|
thisMin=substr($6, 1, length($6)-1);
|
|
thisMax=substr($8, 1, length($8)-1);
|
|
}
|
|
if(state == "valid") {
|
|
if(!foundValidExtent) {
|
|
min=thisMin;
|
|
max=thisMax;
|
|
foundValidExtent=1;
|
|
}
|
|
else {
|
|
if(thisMin < min) {
|
|
min=thisMin;
|
|
}
|
|
if(thisMax > max) {
|
|
max=thisMax;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
allValid=0;
|
|
}
|
|
}
|
|
END {
|
|
if(foundValidExtent == 1) {
|
|
print "";
|
|
print "Min=" min;
|
|
print "Max=" max;
|
|
print "";
|
|
if(allValid == 0) {
|
|
print "Not all extents had min and max values set. Answer is incomplete."
|
|
}
|
|
}
|
|
else {
|
|
print "";
|
|
print "There were not any extents with valid min/max values. Unable to provide answer.";
|
|
print "";
|
|
}
|
|
}'
|
|
|
|
exit 0
|