There is a generator column rule that works fine for Validation but fails during publish.
From TDMPublish.log:
2021-12-17 15:12:26.486 UTC [ERROR] [taskExecutor-20 ] --- [U:][M:][P:] c.c.t.p.m.TDMPublishJobStart: doPublish error, jobId=136522, Exception: An error occurred resolving TABLE: TableName COLUMN: ColumnName. The expression was <EXPRESSION>. The error is <resolve_meta_data_item: TDMServiceException: ifnull: TDMServiceException: sqllist: SqlDataException: DB2 SQL Error: SQLCODE=-20448, SQLSTATE=22007, SQLERRMC=;YYYYMMDD, DRIVER=4.24.92>
2021-12-17 15:12:26.486 UTC [ERROR] [taskExecutor-20 ] --- [U:][M:][P:] c.c.t.p.l.TDMPublishLog: com.ca.tdm.servicecommon.TDMServiceException: An error occurred resolving TABLE: TableName COLUMN: ColumnName. The expression was <EXPRESSION>. The error is <resolve_meta_data_item: TDMServiceException: ifnull: TDMServiceException: sqllist: SqlDataException: DB2 SQL Error: SQLCODE=-20448, SQLSTATE=22007, SQLERRMC=;YYYYMMDD, DRIVER=4.24.92>
at com.ca.tdm.publ.resolver.TDMPublishResolver.resolveRow(TDMPublishResolver.java:227)
at com.ca.tdm.publ.model.TDMPublishJobStart.publishFromView(TDMPublishJobStart.java:1364)
at com.ca.tdm.publ.model.TDMPublishJobStart.doPublishTables(TDMPublishJobStart.java:1125)
at com.ca.tdm.publ.model.TDMPublishJobStart.doPublish(TDMPublishJobStart.java:583)
at com.ca.tdm.publ.publthread.TDMPublishThread.run(TDMPublishThread.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Release : 4.9
There was a blank entry for a column in one of the table being used as part of the EXPRESSION in the rule.
After updating the identified blank entry to a "null" value and published, did not see the reported error for ColumnName column.
The Validation worked because, during validation all the rows are not fetched/tested/used and only one random row is picked.