///|
/// JS env.args includes the runtime executable before the script name.
#cfg(target="js")
fn cli_args() -> Array[String] {
@env.args()[1:].to_owned()
}
///|
#cfg(not(target="js"))
fn cli_args() -> Array[String] {
@env.args()
}
///|
fn run(args : Array[String]) -> Unit raise {
if args.length() != 1 && args.length() != 4 {
abort(
"usage: moon run src/cmd/row_group_scan --target js -- [path column threshold]",
)
}
let path = if args.length() == 1 {
"fixtures/row-groups/base.parquet"
} else {
args[1]
}
let column = if args.length() == 1 { "i32" } else { args[2] }
let threshold = if args.length() == 1 {
100L
} else {
@string.parse_int64(args[3], base=10)
}
let input = @fs.read_file_to_bytes(path)
let result = @scan.scan_ge(input, [column], threshold)
println("predicate: \{column} >= \{threshold}")
println("selected_row_groups: \{@debug.Repr(result.selected_row_groups())}")
println("decoded_rows: \{result.batch().row_count()}")
println("matching_rows_in_batch: \{@debug.Repr(result.matching_rows())}")
println("matching_rows_in_file: \{@debug.Repr(result.matching_file_rows())}")
println("matching_row_count: \{result.matching_row_count()}")
println("columnar_batch: \{result.batch()}")
println("column_data: \{@debug.Repr(result.batch().column_data())}")
}
///|
fn main {
try! run(cli_args())
}