docs: protected RelDataType createTargetRowType(
  		SqlValidatorTable table,
  		SqlNodeList targetColumnList,
  		boolean append) {
  		RelDataType baseRowType = table.getRowType();
  		if (targetColumnList == null) {
  			return baseRowType;
  		}
  		List<RelDataTypeField> targetFields = baseRowType.getFieldList();
  		final List<Map.Entry<String, RelDataType>> fields = new ArrayList<>();
  		if (append) {
  			for (RelDataTypeField targetField : targetFields) {
  				fields.add(
  					Pair.of(SqlUtil.deriveAliasFromOrdinal(fields.size()),
  						targetField.getType()));
  			}
  		}
  		final Set<Integer> assignedFields = new HashSet<>();
  		final RelOptTable relOptTable = table instanceof RelOptTable
  			? ((RelOptTable) table) : null;
  		for (SqlNode node : targetColumnList) {
  			SqlIdentifier id = (SqlIdentifier) node;
  			RelDataTypeField targetField =
  				SqlValidatorUtil.getTargetField(
  					baseRowType, typeFactory, id, catalogReader, relOptTable);
  			if (targetField == null) {
  				throw newValidationError(id,
  					RESOURCE.unknownTargetColumn(id.toString()));
  			}
  			if (!assignedFields.add(targetField.getIndex())) {
  				throw newValidationError(id,
  					RESOURCE.duplicateTargetColumn(targetField.getName()));
  			}
  			fields.add(targetField);
  		}
  		return typeFactory.createStructType(fields);
  	}