mirror of
https://github.com/apache/superset.git
synced 2026-07-26 16:42:32 +00:00
Compare commits
4 Commits
fix/issue-
...
fix/resolv
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
46c2c9c48f | ||
|
|
801baf0a0a | ||
|
|
e3d3262e97 | ||
|
|
6c2ccc44bd |
@@ -1,3 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
@@ -15,8 +17,6 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
# Function to determine Python command
|
||||
get_python_command() {
|
||||
if command -v python3 &>/dev/null; then
|
||||
|
||||
@@ -38,7 +38,7 @@ RESET='\033[0m'
|
||||
echo -e "${GREEN}Updating package lists...${RESET}"
|
||||
apt-get update -qq
|
||||
|
||||
echo -e "${GREEN}Installing packages: $@${RESET}"
|
||||
echo -e "${GREEN}Installing packages: $*${RESET}"
|
||||
apt-get install -yqq --no-install-recommends "$@"
|
||||
|
||||
echo -e "${GREEN}Autoremoving unnecessary packages...${RESET}"
|
||||
|
||||
@@ -163,10 +163,10 @@ do
|
||||
# Iterate through the components of the version strings
|
||||
for (( j=0; j<${#THIS_TAG_NAME_ARRAY[@]}; j++ )); do
|
||||
echo "Comparing ${THIS_TAG_NAME_ARRAY[$j]} to ${LATEST_RELEASE_TAG_ARRAY[$j]}"
|
||||
if [[ $((THIS_TAG_NAME_ARRAY[$j])) > $((LATEST_RELEASE_TAG_ARRAY[$j])) ]]; then
|
||||
if [[ $((THIS_TAG_NAME_ARRAY[$j])) -gt $((LATEST_RELEASE_TAG_ARRAY[$j])) ]]; then
|
||||
compare_result="greater"
|
||||
break
|
||||
elif [[ $((THIS_TAG_NAME_ARRAY[$j])) < $((LATEST_RELEASE_TAG_ARRAY[$j])) ]]; then
|
||||
elif [[ $((THIS_TAG_NAME_ARRAY[$j])) -lt $((LATEST_RELEASE_TAG_ARRAY[$j])) ]]; then
|
||||
compare_result="lesser"
|
||||
break
|
||||
fi
|
||||
|
||||
@@ -227,7 +227,7 @@ development = [
|
||||
"docker",
|
||||
"flask-testing",
|
||||
"freezegun",
|
||||
"grpcio>=1.81.1",
|
||||
"grpcio>=1.82.1",
|
||||
"openapi-spec-validator",
|
||||
"parameterized",
|
||||
"pip",
|
||||
|
||||
@@ -386,7 +386,7 @@ greenlet==3.5.3
|
||||
# sqlalchemy
|
||||
griffelib==2.0.2
|
||||
# via fastmcp-slim
|
||||
grpcio==1.81.1
|
||||
grpcio==1.83.0
|
||||
# via
|
||||
# apache-superset
|
||||
# google-api-core
|
||||
|
||||
@@ -35,7 +35,7 @@ acquire_rat_jar () {
|
||||
wget --quiet ${URL} -O "$JAR_DL" && mv "$JAR_DL" "$JAR"
|
||||
else
|
||||
printf "You do not have curl or wget installed, please install rat manually.\n"
|
||||
exit -1
|
||||
exit 255
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -44,7 +44,7 @@ acquire_rat_jar () {
|
||||
# We failed to download
|
||||
rm "$JAR"
|
||||
printf "Our attempt to download rat locally to ${JAR} failed. Please install rat manually.\n"
|
||||
exit -1
|
||||
exit 255
|
||||
fi
|
||||
printf "Done downloading.\n"
|
||||
}
|
||||
|
||||
@@ -163,10 +163,10 @@ do
|
||||
# Iterate through the components of the version strings
|
||||
for (( j=0; j<${#THIS_TAG_NAME_ARRAY[@]}; j++ )); do
|
||||
echo "Comparing ${THIS_TAG_NAME_ARRAY[$j]} to ${LATEST_RELEASE_TAG_ARRAY[$j]}"
|
||||
if [[ $((THIS_TAG_NAME_ARRAY[$j])) > $((LATEST_RELEASE_TAG_ARRAY[$j])) ]]; then
|
||||
if [[ $((THIS_TAG_NAME_ARRAY[$j])) -gt $((LATEST_RELEASE_TAG_ARRAY[$j])) ]]; then
|
||||
compare_result="greater"
|
||||
break
|
||||
elif [[ $((THIS_TAG_NAME_ARRAY[$j])) < $((LATEST_RELEASE_TAG_ARRAY[$j])) ]]; then
|
||||
elif [[ $((THIS_TAG_NAME_ARRAY[$j])) -lt $((LATEST_RELEASE_TAG_ARRAY[$j])) ]]; then
|
||||
compare_result="lesser"
|
||||
break
|
||||
fi
|
||||
|
||||
@@ -66,12 +66,6 @@ const StyledTable = styled(Table)<{
|
||||
showRowCount?: boolean;
|
||||
}>`
|
||||
${({ theme, isPaginationSticky, showRowCount }) => `
|
||||
th.ant-column-cell {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.actions {
|
||||
opacity: 0;
|
||||
font-size: ${theme.fontSizeXL}px;
|
||||
|
||||
@@ -712,27 +712,12 @@ const transformProps = (
|
||||
let totalQuery;
|
||||
let rowCount;
|
||||
if (serverPagination) {
|
||||
[baseQuery, countQuery] = queriesData;
|
||||
[baseQuery, countQuery, totalQuery] = queriesData;
|
||||
rowCount = (countQuery?.data?.[0]?.rowcount as number) ?? 0;
|
||||
} else {
|
||||
[baseQuery] = queriesData;
|
||||
[baseQuery, totalQuery] = queriesData;
|
||||
rowCount = baseQuery?.rowcount ?? 0;
|
||||
}
|
||||
// `buildQuery` may prepend an extra query (used to compute percent metrics
|
||||
// against the entire result set when `percent_metric_calculation` is set to
|
||||
// `all_records`) before the totals query. Since the totals query, when
|
||||
// present, is always the last entry in `queriesData`, look it up positionally
|
||||
// from the end rather than assuming a fixed index. The minimum number of
|
||||
// queries expected without a totals query is 1 (base query), or 2 when
|
||||
// server pagination is enabled (base query + row count query).
|
||||
const minQueriesWithoutTotals = serverPagination ? 2 : 1;
|
||||
if (
|
||||
showTotals &&
|
||||
queryMode === QueryMode.Aggregate &&
|
||||
queriesData.length > minQueriesWithoutTotals
|
||||
) {
|
||||
totalQuery = queriesData[queriesData.length - 1];
|
||||
}
|
||||
const data = processDataRecords(baseQuery?.data, columns);
|
||||
const comparisonData = processComparisonDataRecords(
|
||||
baseQuery?.data,
|
||||
|
||||
@@ -2575,61 +2575,6 @@ describe('plugin-chart-table', () => {
|
||||
);
|
||||
expect(screen.queryByText('Search by')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
test(
|
||||
'should read the totals row from the correct query when percent metrics ' +
|
||||
'use the "all records" calculation mode',
|
||||
() => {
|
||||
// When `percent_metric_calculation` is `all_records`, buildQuery adds an
|
||||
// extra query (used to compute percentages against the entire result set)
|
||||
// *before* the totals query in `queriesData`. Verify totals are still
|
||||
// sourced from the actual totals query and not this preceding query.
|
||||
const props = {
|
||||
...testData.basic,
|
||||
rawFormData: {
|
||||
...testData.basic.rawFormData,
|
||||
query_mode: QueryMode.Aggregate,
|
||||
metrics: ['sum__num'],
|
||||
percent_metrics: ['count'],
|
||||
percent_metric_calculation: 'all_records',
|
||||
show_totals: true,
|
||||
column_config: {
|
||||
sum__num: { d3NumberFormat: '.0%' },
|
||||
},
|
||||
},
|
||||
queriesData: [
|
||||
{
|
||||
...testData.basic.queriesData[0],
|
||||
colnames: ['name', 'sum__num', '%count'],
|
||||
coltypes: [
|
||||
GenericDataType.String,
|
||||
GenericDataType.Numeric,
|
||||
GenericDataType.Numeric,
|
||||
],
|
||||
data: [{ name: 'Michael', sum__num: 0.1, '%count': 0.05 }],
|
||||
},
|
||||
// extra "all records" query used only to compute percent metrics
|
||||
{
|
||||
...testData.basic.queriesData[0],
|
||||
colnames: ['count'],
|
||||
coltypes: [GenericDataType.Numeric],
|
||||
data: [{ count: 999 }],
|
||||
},
|
||||
// actual totals query
|
||||
{
|
||||
...testData.basic.queriesData[0],
|
||||
colnames: ['sum__num'],
|
||||
coltypes: [GenericDataType.Numeric],
|
||||
data: [{ sum__num: 0.27 }],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const transformedProps = transformProps(props);
|
||||
|
||||
expect(transformedProps.totals).toEqual({ sum__num: 0.27 });
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user