diff --git a/docs/supported_ops.md b/docs/supported_ops.md
index 811cbfa80a6..48b4783820c 100644
--- a/docs/supported_ops.md
+++ b/docs/supported_ops.md
@@ -7679,14 +7679,14 @@ are limited.
S |
PS UTC is only supported TZ for TIMESTAMP |
S |
-S |
-S |
-S |
-S |
-PS UTC is only supported TZ for child TIMESTAMP |
-PS UTC is only supported TZ for child TIMESTAMP |
+ |
+ |
+ |
+ |
PS UTC is only supported TZ for child TIMESTAMP |
-S |
+ |
+ |
+ |
result |
@@ -7700,14 +7700,14 @@ are limited.
S |
PS UTC is only supported TZ for TIMESTAMP |
S |
-S |
-S |
-S |
-S |
-PS UTC is only supported TZ for child TIMESTAMP |
-PS UTC is only supported TZ for child TIMESTAMP |
+ |
+ |
+ |
+ |
PS UTC is only supported TZ for child TIMESTAMP |
-S |
+ |
+ |
+ |
KnownNotNull |
diff --git a/integration_tests/src/main/python/hash_aggregate_test.py b/integration_tests/src/main/python/hash_aggregate_test.py
index 90a9884359a..d9415abe496 100644
--- a/integration_tests/src/main/python/hash_aggregate_test.py
+++ b/integration_tests/src/main/python/hash_aggregate_test.py
@@ -354,6 +354,13 @@ def test_hash_grpby_sum_count_action(data_gen):
lambda spark: gen_df(spark, data_gen, length=100).groupby('a').agg(f.sum('b'))
)
+@allow_non_gpu("ShuffleExchangeExec", "HashAggregateExec")
+@pytest.mark.parametrize('data_gen', [_grpkey_nested_structs_with_array_child], ids=idfn)
+def test_hash_grpby_sum_count_action_fallback(data_gen):
+ assert_gpu_fallback_collect(
+ lambda spark: gen_df(spark, data_gen, length=100).groupby('a').agg(f.sum('b')),
+ 'ShuffleExchangeExec')
+
@pytest.mark.parametrize('data_gen', [_longs_with_nulls], ids=idfn)
def test_hash_reduction_sum_count_action(data_gen):
assert_gpu_and_cpu_row_counts_equal(
diff --git a/sql-plugin/src/main/scala/com/nvidia/spark/rapids/GpuOverrides.scala b/sql-plugin/src/main/scala/com/nvidia/spark/rapids/GpuOverrides.scala
index c376516458a..447bcc03e5b 100644
--- a/sql-plugin/src/main/scala/com/nvidia/spark/rapids/GpuOverrides.scala
+++ b/sql-plugin/src/main/scala/com/nvidia/spark/rapids/GpuOverrides.scala
@@ -1680,7 +1680,9 @@ object GpuOverrides extends Logging {
}),
expr[KnownFloatingPointNormalized](
"Tag to prevent redundant normalization",
- ExprChecks.unaryProjectInputMatchesOutput(TypeSig.all, TypeSig.all),
+ ExprChecks.unaryProjectInputMatchesOutput(
+ (TypeSig.DOUBLE + TypeSig.FLOAT + TypeSig.ARRAY + TypeSig.commonCudfTypes).nested(),
+ (TypeSig.DOUBLE + TypeSig.FLOAT + TypeSig.ARRAY + TypeSig.commonCudfTypes).nested()),
(a, conf, p, r) => new UnaryExprMeta[KnownFloatingPointNormalized](a, conf, p, r) {
override def convertToGpu(child: Expression): GpuExpression =
GpuKnownFloatingPointNormalized(child)
diff --git a/tools/src/main/resources/supportedExprs.csv b/tools/src/main/resources/supportedExprs.csv
index 673b2b86f9c..14e1d79909a 100644
--- a/tools/src/main/resources/supportedExprs.csv
+++ b/tools/src/main/resources/supportedExprs.csv
@@ -260,8 +260,8 @@ IsNull,S,`isnull`,None,project,input,S,S,S,S,S,S,S,S,PS,S,S,S,S,NS,PS,PS,PS,NS
IsNull,S,`isnull`,None,project,result,S,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA
JsonToStructs,NS,`from_json`,This is disabled by default because parsing JSON from a column has a large number of issues and should be considered beta quality right now.,project,jsonStr,NA,NA,NA,NA,NA,NA,NA,NA,NA,S,NA,NA,NA,NA,NA,NA,NA,NA
JsonToStructs,NS,`from_json`,This is disabled by default because parsing JSON from a column has a large number of issues and should be considered beta quality right now.,project,result,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NS,PS,NS,NA
-KnownFloatingPointNormalized,S, ,None,project,input,S,S,S,S,S,S,S,S,PS,S,S,S,S,S,PS,PS,PS,S
-KnownFloatingPointNormalized,S, ,None,project,result,S,S,S,S,S,S,S,S,PS,S,S,S,S,S,PS,PS,PS,S
+KnownFloatingPointNormalized,S, ,None,project,input,S,S,S,S,S,S,S,S,PS,S,NA,NA,NA,NA,PS,NA,NA,NA
+KnownFloatingPointNormalized,S, ,None,project,result,S,S,S,S,S,S,S,S,PS,S,NA,NA,NA,NA,PS,NA,NA,NA
KnownNotNull,S, ,None,project,input,S,S,S,S,S,S,S,S,PS,S,S,NS,S,S,PS,PS,PS,NS
KnownNotNull,S, ,None,project,result,S,S,S,S,S,S,S,S,PS,S,S,NS,S,S,PS,PS,PS,NS
Lag,S,`lag`,None,window,input,S,S,S,S,S,S,S,S,PS,S,S,S,NS,NS,PS,NS,PS,NS