From 9c0854e7d292cf370d6c56813d1b0efde3ac3de1 Mon Sep 17 00:00:00 2001 From: Christopher Vittal Date: Mon, 13 Feb 2023 17:07:35 -0500 Subject: [PATCH] [query] MatrixBlockMatrixWriter can be lowered (#12695) Efficiency can wait. --- .../scala/is/hail/expr/ir/MatrixWriter.scala | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/hail/src/main/scala/is/hail/expr/ir/MatrixWriter.scala b/hail/src/main/scala/is/hail/expr/ir/MatrixWriter.scala index 60bc6ef90d3..a147fc4aac0 100644 --- a/hail/src/main/scala/is/hail/expr/ir/MatrixWriter.scala +++ b/hail/src/main/scala/is/hail/expr/ir/MatrixWriter.scala @@ -64,7 +64,7 @@ abstract class MatrixWriter { ctx: ExecuteContext, ts: TableStage, t: TableIR, r: RTable, relationalLetsAbove: Map[String, IR]): IR = throw new LowererUnsupportedOperation(s"${ this.getClass } does not have defined lowering!") - def canLowerEfficiently: Boolean = false + def canLowerEfficiently: Boolean } case class MatrixNativeWriter( @@ -78,7 +78,7 @@ case class MatrixNativeWriter( ) extends MatrixWriter { def apply(ctx: ExecuteContext, mv: MatrixValue): Unit = mv.write(ctx, path, overwrite, stageLocally, codecSpecJSONStr, partitions, partitionsTypeStr, checkpointFile) - override def canLowerEfficiently: Boolean = !stageLocally && checkpointFile == null + def canLowerEfficiently: Boolean = !stageLocally && checkpointFile == null override def lower(colsFieldName: String, entriesFieldName: String, colKey: IndexedSeq[String], ctx: ExecuteContext, tablestage: TableStage, t: TableIR, r: RTable, relationalLetsAbove: Map[String, IR]): IR = { @@ -409,7 +409,8 @@ case class MatrixVCFWriter( ctx, ts, tl, BaseTypeWithRequiredness(tv.typ).asInstanceOf[RTable], Map())) } - override def canLowerEfficiently: Boolean = true + def canLowerEfficiently: Boolean = true + override def lower(colsFieldName: String, entriesFieldName: String, colKey: IndexedSeq[String], ctx: ExecuteContext, ts: TableStage, t: TableIR, r: RTable, relationalLetsAbove: Map[String, IR]): IR = { require(exportType != ExportType.PARALLEL_COMPOSABLE) @@ -841,7 +842,7 @@ case class MatrixGENWriter( ctx, ts, tl, BaseTypeWithRequiredness(tv.typ).asInstanceOf[RTable], Map())) } - override def canLowerEfficiently: Boolean = true + def canLowerEfficiently: Boolean = true override def lower(colsFieldName: String, entriesFieldName: String, colKey: IndexedSeq[String], ctx: ExecuteContext, ts: TableStage, t: TableIR, r: RTable, relationalLetsAbove: Map[String, IR]): IR = { @@ -963,7 +964,8 @@ case class MatrixBGENWriter( ctx, ts, tl, BaseTypeWithRequiredness(tv.typ).asInstanceOf[RTable], Map())) } - override def canLowerEfficiently: Boolean = true + def canLowerEfficiently: Boolean = true + override def lower(colsFieldName: String, entriesFieldName: String, colKey: IndexedSeq[String], ctx: ExecuteContext, ts: TableStage, t: TableIR, r: RTable, relationalLetsAbove: Map[String, IR]): IR = { @@ -1241,7 +1243,8 @@ case class MatrixPLINKWriter( ctx, ts, tl, BaseTypeWithRequiredness(tv.typ).asInstanceOf[RTable], Map())) } - override def canLowerEfficiently: Boolean = true + def canLowerEfficiently: Boolean = true + override def lower(colsFieldName: String, entriesFieldName: String, colKey: IndexedSeq[String], ctx: ExecuteContext, ts: TableStage, t: TableIR, r: RTable, relationalLetsAbove: Map[String, IR]): IR = { val tm = MatrixType.fromTableType(t.typ, colsFieldName, entriesFieldName, colKey) @@ -1400,6 +1403,8 @@ case class MatrixBlockMatrixWriter( ) extends MatrixWriter { def apply(ctx: ExecuteContext, mv: MatrixValue): Unit = MatrixWriteBlockMatrix(ctx, mv, entryField, path, overwrite, blockSize) + def canLowerEfficiently: Boolean = true + override def lower(colsFieldName: String, entriesFieldName: String, colKey: IndexedSeq[String], ctx: ExecuteContext, ts: TableStage, t: TableIR, r: RTable, relationalLetsAbove: Map[String, IR]): IR = {