This is an automated email from the ASF dual-hosted git repository.

dlych pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 758f94df1986566371e605dffe4423df531b5a87
Author: Ali Alsuliman <[email protected]>
AuthorDate: Mon Apr 4 15:24:04 2022 +0300

    [NO ISSUE][OTH] Redact field name
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Change-Id: Iad7cb5ba2f49088fd30cf8dce6f002191fc808c2
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/16003
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Ali Alsuliman <[email protected]>
    Reviewed-by: Michael Blow <[email protected]>
---
 .../apache/asterix/optimizer/rules/ConstantFoldingRule.java   |  3 ++-
 .../asterix/optimizer/rules/RemoveDuplicateFieldsRule.java    |  3 ++-
 .../asterix/translator/SqlppExpressionToPlanTranslator.java   |  4 +++-
 .../java/org/apache/asterix/translator/TypeTranslator.java    |  4 +++-
 .../java/org/apache/asterix/translator/util/ValidateUtil.java |  2 +-
 .../org/apache/asterix/app/translator/QueryTranslator.java    | 11 +++++++----
 .../apache/asterix/external/library/java/base/JRecord.java    |  4 +++-
 .../org/apache/asterix/external/parser/ADMDataParser.java     |  5 +++--
 .../asterix/external/parser/AbstractJsonDataParser.java       |  6 ++++--
 .../asterix/external/parser/AbstractNestedDataParser.java     |  3 ++-
 .../apache/asterix/external/parser/DelimitedDataParser.java   |  4 +++-
 .../java/org/apache/asterix/external/parser/TweetParser.java  |  3 ++-
 .../org/apache/asterix/metadata/utils/KeyFieldTypeUtil.java   |  3 ++-
 .../asterix/metadata/utils/RTreeResourceFactoryProvider.java  |  5 +++--
 .../typecomputer/impl/ClosedRecordConstructorResultType.java  |  4 +++-
 .../om/typecomputer/impl/OpenRecordConstructorResultType.java |  4 +++-
 .../asterix/om/typecomputer/impl/RecordMergeTypeComputer.java |  6 ++++--
 .../asterix/om/types/runtime/RuntimeRecordTypeInfo.java       |  4 +++-
 18 files changed, 53 insertions(+), 25 deletions(-)

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
index 03d112df31..10aedc766a 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
@@ -99,6 +99,7 @@ import org.apache.hyracks.api.exceptions.Warning;
 import org.apache.hyracks.data.std.api.IPointable;
 import org.apache.hyracks.data.std.primitive.VoidPointable;
 import org.apache.hyracks.dataflow.common.comm.util.ByteBufferInputStream;
+import org.apache.hyracks.util.LogRedactionUtil;
 
 import com.google.common.collect.ImmutableMap;
 
@@ -339,7 +340,7 @@ public class ConstantFoldingRule implements 
IAlgebraicRewriteRule {
                         IWarningCollector warningCollector = 
optContext.getWarningCollector();
                         if (warningCollector.shouldWarn()) {
                             
warningCollector.warn(Warning.of(fieldNameExpr.second.getSourceLocation(),
-                                    
ErrorCode.COMPILATION_DUPLICATE_FIELD_NAME, fieldName));
+                                    
ErrorCode.COMPILATION_DUPLICATE_FIELD_NAME, 
LogRedactionUtil.userData(fieldName)));
                         }
                         iterator.remove();
                         iterator.next();
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/RemoveDuplicateFieldsRule.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/RemoveDuplicateFieldsRule.java
index 6c4f8c6a59..e924a4cef8 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/RemoveDuplicateFieldsRule.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/RemoveDuplicateFieldsRule.java
@@ -41,6 +41,7 @@ import 
org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogi
 import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 import org.apache.hyracks.api.exceptions.IWarningCollector;
 import org.apache.hyracks.api.exceptions.Warning;
+import org.apache.hyracks.util.LogRedactionUtil;
 
 /**
  * <pre>
@@ -116,7 +117,7 @@ public class RemoveDuplicateFieldsRule implements 
IAlgebraicRewriteRule {
                     IWarningCollector warningCollector = 
context.getWarningCollector();
                     if (warningCollector.shouldWarn()) {
                         
warningCollector.warn(Warning.of(fieldNameExpr.getSourceLocation(),
-                                ErrorCode.COMPILATION_DUPLICATE_FIELD_NAME, 
fieldName));
+                                ErrorCode.COMPILATION_DUPLICATE_FIELD_NAME, 
LogRedactionUtil.userData(fieldName)));
                     }
                     iterator.remove();
                     iterator.next();
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java
index ea80ea67e4..3c4537f98d 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java
@@ -136,6 +136,7 @@ import 
org.apache.hyracks.algebricks.core.algebra.operators.logical.WindowOperat
 import org.apache.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
 import 
org.apache.hyracks.algebricks.core.algebra.util.OperatorManipulationUtil;
 import org.apache.hyracks.api.exceptions.SourceLocation;
+import org.apache.hyracks.util.LogRedactionUtil;
 
 /**
  * Each visit returns a pair of an operator and a variable. The variable
@@ -1009,7 +1010,8 @@ public class SqlppExpressionToPlanTranslator extends 
LangExpressionToPlanTransla
     private FieldBinding generateFieldBinding(String fieldName, Expression 
fieldValueExpr, Set<String> outFieldNames,
             SourceLocation sourceLoc) throws CompilationException {
         if (!outFieldNames.add(fieldName)) {
-            throw new CompilationException(ErrorCode.DUPLICATE_FIELD_NAME, 
sourceLoc, fieldName);
+            throw new CompilationException(ErrorCode.DUPLICATE_FIELD_NAME, 
sourceLoc,
+                    LogRedactionUtil.userData(fieldName));
         }
         return new FieldBinding(new LiteralExpr(new StringLiteral(fieldName)), 
fieldValueExpr);
     }
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java
index c482269f53..c54cdc1ce1 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java
@@ -55,6 +55,7 @@ import org.apache.asterix.om.types.TypeSignature;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.api.exceptions.SourceLocation;
+import org.apache.hyracks.util.LogRedactionUtil;
 
 public class TypeTranslator {
 
@@ -314,7 +315,8 @@ public class TypeTranslator {
         int i = 0;
         for (String s : names) {
             if (names.indexOf(s) < i) {
-                throw new CompilationException(ErrorCode.DUPLICATE_FIELD_NAME, 
rtd.getSourceLocation(), s);
+                throw new CompilationException(ErrorCode.DUPLICATE_FIELD_NAME, 
rtd.getSourceLocation(),
+                        LogRedactionUtil.userData(s));
             }
             fldNames[i++] = s;
         }
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java
index 248e6d03fe..e51a539e32 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java
@@ -242,7 +242,7 @@ public class ValidateUtil {
                         throw new 
CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
                                 "The field '"
                                         + 
LogRedactionUtil.userData(RecordUtil.toFullyQualifiedName(displayFieldName))
-                                        + "' which is " + "of type " + 
fieldType.getTypeTag()
+                                        + "' which is of type " + 
fieldType.getTypeTag()
                                         + " cannot be indexed using the BTree 
index.");
                 }
                 break;
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index 5e4b7306b9..ebc809720c 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -1235,13 +1235,15 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
                         if (stmtCreateIndex.isEnforced()) {
                             if (!projectTypeExpr.isUnknownable()) {
                                 throw new 
CompilationException(ErrorCode.INDEX_ILLEGAL_ENFORCED_NON_OPTIONAL,
-                                        indexedElement.getSourceLocation(), 
String.valueOf(projectPath));
+                                        indexedElement.getSourceLocation(),
+                                        
LogRedactionUtil.userData(String.valueOf(projectPath)));
                             }
                             // don't allow creating an enforced index on a 
closed-type field, fields that
                             // are part of schema get the field type, if it's 
not null, then the field is closed-type
                             if (isFieldFromSchema) {
                                 throw new 
CompilationException(ErrorCode.INDEX_ILLEGAL_ENFORCED_ON_CLOSED_FIELD,
-                                        indexedElement.getSourceLocation(), 
String.valueOf(projectPath));
+                                        indexedElement.getSourceLocation(),
+                                        
LogRedactionUtil.userData(String.valueOf(projectPath)));
                             }
                         } else {
                             if (indexType != IndexType.BTREE && indexType != 
IndexType.ARRAY) {
@@ -1272,7 +1274,7 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
 
                     if (fieldTypePrime == null) {
                         throw new CompilationException(ErrorCode.UNKNOWN_TYPE, 
indexedElement.getSourceLocation(),
-                                String.valueOf(projectPath));
+                                
LogRedactionUtil.userData(String.valueOf(projectPath)));
                     }
                     validateIndexFieldType(indexType, fieldTypePrime, 
projectPath, indexedElement.getSourceLocation());
 
@@ -1284,7 +1286,8 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
                 // Try to add the key & its source to the set of keys for 
duplicate detection.
                 if (!indexKeysSet.add(indexedElement.toIdentifier())) {
                     throw new 
AsterixException(ErrorCode.INDEX_ILLEGAL_REPETITIVE_FIELD,
-                            indexedElement.getSourceLocation(), 
indexedElement.getProjectListDisplayForm());
+                            indexedElement.getSourceLocation(),
+                            
LogRedactionUtil.userData(indexedElement.getProjectListDisplayForm()));
                 }
 
                 indexFieldTypes.add(fieldTypes);
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRecord.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRecord.java
index 9bd6461cb7..622533b5a9 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRecord.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRecord.java
@@ -40,6 +40,7 @@ import org.apache.asterix.om.types.ATypeTag;
 import org.apache.asterix.om.types.IAType;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.util.LogRedactionUtil;
 
 public final class JRecord extends JComplexObject<Map<String, Object>> {
 
@@ -89,7 +90,8 @@ public final class JRecord extends JComplexObject<Map<String, 
Object>> {
             // check open part
             IJObject fieldValue = openFields.get(fieldName);
             if (fieldValue == null) {
-                throw new 
RuntimeDataException(ErrorCode.LIBRARY_JAVA_JOBJECTS_UNKNOWN_FIELD, fieldName);
+                throw new 
RuntimeDataException(ErrorCode.LIBRARY_JAVA_JOBJECTS_UNKNOWN_FIELD,
+                        LogRedactionUtil.userData(fieldName));
             }
             return fieldValue;
         }
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
index 4a46717588..d75b84df5d 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
@@ -55,6 +55,7 @@ import 
org.apache.asterix.runtime.operators.file.adm.AdmLexer.TokenImage;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IMutableValueStorage;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.util.LogRedactionUtil;
 
 /**
  * Parser for ADM formatted data.
@@ -472,7 +473,7 @@ public class ADMDataParser extends AbstractDataParser 
implements IStreamDataPars
                         fieldId = recBuilder.getFieldId(fldName);
                         if ((fieldId < 0) && !recType.isOpen()) {
                             throw new 
ParseException(ErrorCode.PARSER_ADM_DATA_PARSER_EXTRA_FIELD_IN_CLOSED_RECORD,
-                                    fldName);
+                                    LogRedactionUtil.userData(fldName));
                         } else if ((fieldId < 0) && recType.isOpen()) {
                             parseString(tmpTokenImage.getBuffer(), 
tmpTokenImage.getBegin() + 1,
                                     tmpTokenImage.getLength() - 2, 
fieldNameBuffer.getDataOutput());
@@ -527,7 +528,7 @@ public class ADMDataParser extends AbstractDataParser 
implements IStreamDataPars
             final int nullableFieldId = checkOptionalConstraints(recType, 
nulls);
             if (nullableFieldId != -1) {
                 throw new 
ParseException(ErrorCode.PARSER_ADM_DATA_PARSER_FIELD_NOT_NULL,
-                        recType.getFieldNames()[nullableFieldId]);
+                        
LogRedactionUtil.userData(recType.getFieldNames()[nullableFieldId]));
             }
         }
         recBuilder.write(out, true);
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractJsonDataParser.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractJsonDataParser.java
index 9a602de628..4f8b628e00 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractJsonDataParser.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractJsonDataParser.java
@@ -48,6 +48,7 @@ import 
org.apache.asterix.runtime.exceptions.UnsupportedTypeException;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.util.ExceptionUtils;
 import org.apache.hyracks.data.std.api.IMutableValueStorage;
+import org.apache.hyracks.util.LogRedactionUtil;
 import org.apache.hyracks.util.ParseUtil;
 
 import com.fasterxml.jackson.core.JsonFactory;
@@ -198,7 +199,7 @@ public abstract class AbstractJsonDataParser extends 
AbstractNestedDataParser<AD
 
             if (!recordType.isOpen() && fieldIndex < 0) {
                 throw new 
RuntimeDataException(ErrorCode.PARSER_ADM_DATA_PARSER_EXTRA_FIELD_IN_CLOSED_RECORD,
-                        fieldName);
+                        LogRedactionUtil.userData(fieldName));
             }
             valueBuffer.reset();
             nextToken();
@@ -213,7 +214,8 @@ public abstract class AbstractJsonDataParser extends 
AbstractNestedDataParser<AD
 
                 //fail fast if the current field is not nullable
                 if (currentToken() == ADMToken.NULL && 
!isNullableType(fieldType)) {
-                    throw new 
RuntimeDataException(ErrorCode.PARSER_EXT_DATA_PARSER_CLOSED_FIELD_NULL, 
fieldName);
+                    throw new 
RuntimeDataException(ErrorCode.PARSER_EXT_DATA_PARSER_CLOSED_FIELD_NULL,
+                            LogRedactionUtil.userData(fieldName));
                 }
 
                 nullBitMap.set(fieldIndex);
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractNestedDataParser.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractNestedDataParser.java
index bc15f1ee9a..b8a74d968b 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractNestedDataParser.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractNestedDataParser.java
@@ -35,6 +35,7 @@ import org.apache.asterix.om.types.IAType;
 import org.apache.asterix.om.types.hierachy.ATypeHierarchy;
 import org.apache.asterix.om.utils.RecordUtil;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.util.LogRedactionUtil;
 
 /**
  * Abstract class for nested formats (ADM, JSON, XML ... etc)
@@ -117,7 +118,7 @@ public abstract class AbstractNestedDataParser<T> extends 
AbstractDataParser {
         for (int i = 0; i < recordType.getFieldTypes().length; i++) {
             if (!nullBitmap.get(i) && 
!isMissableType(recordType.getFieldTypes()[i])) {
                 throw new 
RuntimeDataException(ErrorCode.PARSER_EXT_DATA_PARSER_CLOSED_FIELD_NULL,
-                        recordType.getFieldNames()[i]);
+                        
LogRedactionUtil.userData(recordType.getFieldNames()[i]));
             }
         }
     }
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/DelimitedDataParser.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/DelimitedDataParser.java
index 590f51d781..2936d11b80 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/DelimitedDataParser.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/DelimitedDataParser.java
@@ -51,6 +51,7 @@ import 
org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 import org.apache.hyracks.dataflow.common.data.parsers.IValueParser;
 import org.apache.hyracks.dataflow.common.data.parsers.IValueParserFactory;
 import org.apache.hyracks.dataflow.std.file.FieldCursorForDelimitedDataParser;
+import org.apache.hyracks.util.LogRedactionUtil;
 import org.apache.hyracks.util.ParseUtil;
 
 public class DelimitedDataParser extends AbstractDataParser implements 
IStreamDataParser, IRecordDataParser<char[]> {
@@ -108,7 +109,8 @@ public class DelimitedDataParser extends AbstractDataParser 
implements IStreamDa
             fldIds[i] = recBuilder.getFieldId(name);
             if (fldIds[i] < 0) {
                 if (!recordType.isOpen()) {
-                    throw new 
RuntimeDataException(ErrorCode.PARSER_DELIMITED_ILLEGAL_FIELD, name, 
recordType);
+                    throw new 
RuntimeDataException(ErrorCode.PARSER_DELIMITED_ILLEGAL_FIELD,
+                            LogRedactionUtil.userData(name), recordType);
                 } else {
                     nameBuffers[i] = new ArrayBackedValueStorage();
                     str.setValue(name);
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/TweetParser.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/TweetParser.java
index b970b04f62..99d3a5bab5 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/TweetParser.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/TweetParser.java
@@ -43,6 +43,7 @@ import org.apache.asterix.om.util.container.ListObjectPool;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IMutableValueStorage;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.util.LogRedactionUtil;
 import org.apache.hyracks.util.string.UTF8StringWriter;
 
 import com.fasterxml.jackson.databind.JsonNode;
@@ -200,7 +201,7 @@ public class TweetParser extends AbstractDataParser 
implements IRecordDataParser
                 if (obj.get(curFNames[iter1]).isNull() && !(curTypes[iter1] 
instanceof AUnionType)) {
                     if (curRecType.isClosedField(curFNames[iter1])) {
                         throw new 
RuntimeDataException(ErrorCode.PARSER_EXT_DATA_PARSER_CLOSED_FIELD_NULL,
-                                curFNames[iter1]);
+                                LogRedactionUtil.userData(curFNames[iter1]));
                     } else {
                         continue;
                     }
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/KeyFieldTypeUtil.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/KeyFieldTypeUtil.java
index 61effa8b15..c4cc1de05c 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/KeyFieldTypeUtil.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/KeyFieldTypeUtil.java
@@ -40,6 +40,7 @@ import 
org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.common.utils.Triple;
 import org.apache.hyracks.api.exceptions.SourceLocation;
+import org.apache.hyracks.util.LogRedactionUtil;
 
 public class KeyFieldTypeUtil {
 
@@ -323,7 +324,7 @@ public class KeyFieldTypeUtil {
                 } else {
                     // closed record type and we couldn't find the field -> 
error.
                     throw new 
CompilationException(ErrorCode.COMPILATION_FIELD_NOT_FOUND, sourceLoc,
-                            RecordUtil.toFullyQualifiedName(path));
+                            
LogRedactionUtil.userData(RecordUtil.toFullyQualifiedName(path)));
                 }
             }
             if (fieldType.getTypeTag() == ATypeTag.UNION) {
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/RTreeResourceFactoryProvider.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/RTreeResourceFactoryProvider.java
index 463cffb65e..aa37ebbe41 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/RTreeResourceFactoryProvider.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/RTreeResourceFactoryProvider.java
@@ -39,7 +39,7 @@ import org.apache.asterix.om.types.ATypeTag;
 import org.apache.asterix.om.types.BuiltinType;
 import org.apache.asterix.om.types.IAType;
 import org.apache.asterix.om.utils.NonTaggedFormatUtil;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.asterix.om.utils.RecordUtil;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.data.IBinaryComparatorFactoryProvider;
@@ -59,6 +59,7 @@ import 
org.apache.hyracks.storage.am.lsm.rtree.dataflow.LSMRTreeWithAntiMatterLo
 import org.apache.hyracks.storage.am.rtree.frames.RTreePolicyType;
 import org.apache.hyracks.storage.common.IResourceFactory;
 import org.apache.hyracks.storage.common.IStorageManager;
+import org.apache.hyracks.util.LogRedactionUtil;
 
 public class RTreeResourceFactoryProvider implements IResourceFactoryProvider {
 
@@ -82,7 +83,7 @@ public class RTreeResourceFactoryProvider implements 
IResourceFactoryProvider {
                 indexDetails.getKeyFieldNames().get(0), recordType).first;
         if (spatialType == null) {
             throw new 
CompilationException(ErrorCode.COMPILATION_FIELD_NOT_FOUND,
-                    StringUtils.join(indexDetails.getKeyFieldNames().get(0), 
'.'));
+                    
LogRedactionUtil.userData(RecordUtil.toFullyQualifiedName(indexDetails.getKeyFieldNames().get(0))));
         }
         List<List<String>> primaryKeyFields = dataset.getPrimaryKeys();
         int numPrimaryKeys = primaryKeyFields.size();
diff --git 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ClosedRecordConstructorResultType.java
 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ClosedRecordConstructorResultType.java
index 077e9b34dd..d3cb2d7151 100644
--- 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ClosedRecordConstructorResultType.java
+++ 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ClosedRecordConstructorResultType.java
@@ -38,6 +38,7 @@ import 
org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
 import 
org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
 import 
org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
 import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
+import org.apache.hyracks.util.LogRedactionUtil;
 
 public class ClosedRecordConstructorResultType implements IResultTypeComputer {
 
@@ -76,7 +77,8 @@ public class ClosedRecordConstructorResultType implements 
IResultTypeComputer {
             }
             for (int j = 0; j < i; j++) {
                 if (fieldName.equals(fieldNames[j])) {
-                    throw new 
CompilationException(ErrorCode.DUPLICATE_FIELD_NAME, f.getSourceLocation(), 
fieldName);
+                    throw new 
CompilationException(ErrorCode.DUPLICATE_FIELD_NAME, f.getSourceLocation(),
+                            LogRedactionUtil.userData(fieldName));
                 }
             }
             fieldTypes[i] = e2Type;
diff --git 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/OpenRecordConstructorResultType.java
 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/OpenRecordConstructorResultType.java
index 6b082300a8..838f6f8e19 100644
--- 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/OpenRecordConstructorResultType.java
+++ 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/OpenRecordConstructorResultType.java
@@ -43,6 +43,7 @@ import 
org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import 
org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
 import 
org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
 import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
+import org.apache.hyracks.util.LogRedactionUtil;
 
 public class OpenRecordConstructorResultType implements IResultTypeComputer {
 
@@ -78,7 +79,8 @@ public class OpenRecordConstructorResultType implements 
IResultTypeComputer {
             String fieldName = ConstantExpressionUtil.getStringConstant(e1);
             if (fieldName != null && t2 != null && TypeHelper.isClosed(t2)) {
                 if (namesList.contains(fieldName)) {
-                    throw new 
CompilationException(ErrorCode.DUPLICATE_FIELD_NAME, f.getSourceLocation(), 
fieldName);
+                    throw new 
CompilationException(ErrorCode.DUPLICATE_FIELD_NAME, f.getSourceLocation(),
+                            LogRedactionUtil.userData(fieldName));
                 }
                 namesList.add(fieldName);
                 if (t2.getTypeTag() == ATypeTag.UNION) {
diff --git 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/RecordMergeTypeComputer.java
 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/RecordMergeTypeComputer.java
index b1e4021ca3..9985a4cd90 100644
--- 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/RecordMergeTypeComputer.java
+++ 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/RecordMergeTypeComputer.java
@@ -40,6 +40,7 @@ import 
org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvir
 import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
 import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
 import org.apache.hyracks.api.exceptions.SourceLocation;
+import org.apache.hyracks.util.LogRedactionUtil;
 
 public class RecordMergeTypeComputer implements IResultTypeComputer {
 
@@ -111,7 +112,7 @@ public class RecordMergeTypeComputer implements 
IResultTypeComputer {
                     // If the ignore duplicates flag is not set, we throw a 
duplicate field exception
                     else {
                         throw new 
CompilationException(ErrorCode.COMPILATION_DUPLICATE_FIELD_NAME,
-                                f.getSourceLocation(), fieldNames[i]);
+                                f.getSourceLocation(), 
LogRedactionUtil.userData(fieldNames[i]));
                     }
                 }
 
@@ -144,7 +145,8 @@ public class RecordMergeTypeComputer implements 
IResultTypeComputer {
     private IAType mergedNestedType(String fieldName, IAType fieldType1, 
IAType fieldType0, SourceLocation sourceLoc)
             throws AlgebricksException {
         if (fieldType1.getTypeTag() != ATypeTag.OBJECT || 
fieldType0.getTypeTag() != ATypeTag.OBJECT) {
-            throw new 
CompilationException(ErrorCode.COMPILATION_DUPLICATE_FIELD_NAME, sourceLoc, 
fieldName);
+            throw new 
CompilationException(ErrorCode.COMPILATION_DUPLICATE_FIELD_NAME, sourceLoc,
+                    LogRedactionUtil.userData(fieldName));
         }
 
         ARecordType resultType = (ARecordType) fieldType0;
diff --git 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/runtime/RuntimeRecordTypeInfo.java
 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/runtime/RuntimeRecordTypeInfo.java
index ccdfa0ed38..9d53ab3b96 100644
--- 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/runtime/RuntimeRecordTypeInfo.java
+++ 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/runtime/RuntimeRecordTypeInfo.java
@@ -32,6 +32,7 @@ import 
org.apache.hyracks.data.std.accessors.PointableBinaryHashFunctionFactory;
 import org.apache.hyracks.data.std.accessors.UTF8StringBinaryComparatorFactory;
 import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.data.std.util.ByteArrayAccessibleOutputStream;
+import org.apache.hyracks.util.LogRedactionUtil;
 import org.apache.hyracks.util.string.UTF8StringUtil;
 import org.apache.hyracks.util.string.UTF8StringWriter;
 
@@ -100,7 +101,8 @@ public class RuntimeRecordTypeInfo {
                     int j = getFieldIndex(baaos.getByteArray(), 
serializedFieldNameOffsets[i],
                             
UTF8StringUtil.getStringLength(baaos.getByteArray(), 
serializedFieldNameOffsets[i]));
                     if (j != i) {
-                        throw new 
RuntimeDataException(ErrorCode.DUPLICATE_FIELD_NAME, fieldNames[i]);
+                        throw new 
RuntimeDataException(ErrorCode.DUPLICATE_FIELD_NAME,
+                                LogRedactionUtil.userData(fieldNames[i]));
                     }
                 }
             } catch (IOException e) {

Reply via email to