///|
fn main {
  let root = "fixtures/delta/covid"
  let table = @delta.DeltaTable::open(root) catch {
    err => {
      println("open failed: \{err}")
      return
    }
  }
  let snapshot = table.snapshot() catch {
    err => {
      println("snapshot failed: \{err}")
      return
    }
  }
  println(
    "table \{root}: version=\{snapshot.version}, files=\{snapshot.files.length()}, rows=\{snapshot.total_rows}",
  )
  println("schema:")
  for f in snapshot.metadata.schema.fields {
    println("  \{f.name}: \{@delta.delta_type_name(f.type_)}")
  }
  let result = @delta.read_snapshot(root, snapshot, Some(5)) catch {
    err => {
      println("read failed: \{err}")
      return
    }
  }
  println("")
  println("first 5 rows (read from \{result.files_read} parquet file):")
  let mut header = ""
  for c in result.columns {
    header = header + c.name + "\t"
  }
  println(header)
  let mut r = 0
  while r < result.row_count && r < 5 {
    let mut line = ""
    for c in result.columns {
      line = line + @delta.cell_to_display(c.cells[r]) + "\t"
    }
    println(line)
    r = r + 1
  }
}