- if( ad_map[i].ssam_convert ) {
- (*adp)->ad_type->sat_equality->smr_convert
- = ad_map[i].ssam_convert;
- }
- if( ad_map[i].ssam_normalize ) {
- (*adp)->ad_type->sat_equality->smr_normalize
- = ad_map[i].ssam_normalize;
- }
- if( ad_map[i].ssam_match ) {
- (*adp)->ad_type->sat_equality->smr_match
- = ad_map[i].ssam_match;
- }
- if( ad_map[i].ssam_indexer ) {
- (*adp)->ad_type->sat_equality->smr_indexer
- = ad_map[i].ssam_indexer;
- }
- if( ad_map[i].ssam_filter ) {
- (*adp)->ad_type->sat_equality->smr_filter
- = ad_map[i].ssam_filter;
+ if( ad_map[i].ssam_convert ||
+ ad_map[i].ssam_normalize ||
+ ad_map[i].ssam_match ||
+ ad_map[i].ssam_indexer ||
+ ad_map[i].ssam_filter )
+ {
+ MatchingRule *mr = ch_malloc( sizeof( MatchingRule ) );
+ *mr = *(*adp)->ad_type->sat_equality;
+ (*adp)->ad_type->sat_equality = mr;
+
+ if( ad_map[i].ssam_convert ) {
+ mr->smr_convert = ad_map[i].ssam_convert;
+ }
+ if( ad_map[i].ssam_normalize ) {
+ mr->smr_normalize = ad_map[i].ssam_normalize;
+ }
+ if( ad_map[i].ssam_match ) {
+ mr->smr_match = ad_map[i].ssam_match;
+ }
+ if( ad_map[i].ssam_indexer ) {
+ mr->smr_indexer = ad_map[i].ssam_indexer;
+ }
+ if( ad_map[i].ssam_filter ) {
+ mr->smr_filter = ad_map[i].ssam_filter;
+ }