PARQUET-1970: Make minor releases source compatible (#861)
diff --git a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/OffsetIndex.java b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/OffsetIndex.java
index 02d58af..6c16294 100644
--- a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/OffsetIndex.java
+++ b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/OffsetIndex.java
@@ -49,13 +49,15 @@
* @return the index of the first row in the page
*/
public long getFirstRowIndex(int pageIndex);
-
+
/**
* @param pageIndex
* the index of the page
* @return the original ordinal of the page in the column chunk
*/
- public int getPageOrdinal(int pageIndex);
+ public default int getPageOrdinal(int pageIndex) {
+ return pageIndex;
+ }
/**
* @param pageIndex
diff --git a/parquet-common/src/main/java/org/apache/parquet/io/OutputFile.java b/parquet-common/src/main/java/org/apache/parquet/io/OutputFile.java
index e1558ce..7733175 100644
--- a/parquet-common/src/main/java/org/apache/parquet/io/OutputFile.java
+++ b/parquet-common/src/main/java/org/apache/parquet/io/OutputFile.java
@@ -31,5 +31,7 @@
long defaultBlockSize();
- String getPath();
+ default String getPath() {
+ return null;
+ }
}
diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/PropertiesDrivenCryptoFactory.java b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/PropertiesDrivenCryptoFactory.java
index 8fdeca2..f35d9ec 100644
--- a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/PropertiesDrivenCryptoFactory.java
+++ b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/PropertiesDrivenCryptoFactory.java
@@ -92,6 +92,9 @@
boolean keyMaterialInternalStorage = fileHadoopConfig.getBoolean(KeyToolkit.KEY_MATERIAL_INTERNAL_PROPERTY_NAME,
KeyToolkit.KEY_MATERIAL_INTERNAL_DEFAULT);
if (!keyMaterialInternalStorage) {
+ if (tempFilePath == null) {
+ throw new ParquetCryptoRuntimeException("Output file path cannot be null");
+ }
try {
keyMaterialStore = new HadoopFSKeyMaterialStore(tempFilePath.getFileSystem(fileHadoopConfig));
keyMaterialStore.initialize(tempFilePath, fileHadoopConfig, false);
diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetWriter.java b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetWriter.java
index c571afd..550cd33 100644
--- a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetWriter.java
+++ b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetWriter.java
@@ -194,7 +194,7 @@
compressionCodecName, blockSize, pageSize, dictionaryPageSize,
enableDictionary, validating, writerVersion, conf);
}
-
+
/**
* Create a new ParquetWriter.
*
@@ -281,7 +281,8 @@
// encryptionProperties could be built from the implementation of EncryptionPropertiesFactory when it is attached.
if (encryptionProperties == null) {
- encryptionProperties = ParquetOutputFormat.createEncryptionProperties(conf, new Path(file.getPath()), writeContext);
+ encryptionProperties = ParquetOutputFormat.createEncryptionProperties(conf,
+ file == null ? null : new Path(file.getPath()), writeContext);
}
ParquetFileWriter fileWriter = new ParquetFileWriter(
diff --git a/pom.xml b/pom.xml
index 685e194..c076c76 100644
--- a/pom.xml
+++ b/pom.xml
@@ -503,7 +503,7 @@
<configuration>
<parameter>
<oldVersionPattern>${previous.version}</oldVersionPattern>
- <breakBuildBasedOnSemanticVersioning>true</breakBuildBasedOnSemanticVersioning>
+ <breakBuildOnSourceIncompatibleModifications>true</breakBuildOnSourceIncompatibleModifications>
<onlyModified>true</onlyModified>
<overrideCompatibilityChangeParameters>
<!-- Adding a new method with default implementation to an interface should be a compatible change.