You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
ColumnStore now uses standard bin/lib paths for pretty much everything. Data path is now hard-coded to /var/lib/columnstore. This patch also: * Removes v1 decompression * Removes a bunch of unneeded files * Removes COLUMNSTORE_INSTALL_DIR / $INSTALLDIR * Makes my.cnf.d work for all platforms (MCOL-3558) * Changes configcpp to use recursive mutex (fixes possible config write deadlock) * Fixes MCOL-3599 Fix regr functions, The library was installed in the wrong location * Fixes a bunch of Ubuntu packaging issues * Changes the binary names of several of the executables so as not to clash with potential executables from other packages
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
|