imo you should implement double pass for the evaluator. using pest tokens in the functions etc makes it gard to implement also makes it slow and not optimizable
on my machine that i did the basic run, the one in the link is way more faster.
```
$ time ./duckdb_cli-linux-amd64 ./basic_batched.db -c "COPY user TO 'user.csv'"
100% (00:00:20.55 elapsed)
real 0m24.162s
user 0m22.505s
sys 0m1.988s
```
```
$ time ./duckdb_cli-linux-amd64 ./basic_batched.db -c "COPY user TO 'user.parquet'"
100% (00:00:17.11 elapsed)
real 0m20.970s
user 0m19.347s
sys 0m1.841s
```
```
$ time cargo run --bin parquet --release -- basic_batched.db user -o out.parquet
Finished `release` profile [optimized] target(s) in 0.11s
Running `target/release/parquet basic_batched.db user -o out.parquet`
Database opened in 14.828µs
SQLite to Parquet Exporter
==========================
Database: basic_batched.db
Page size: 4096 bytes
Text encoding: Utf8
Output: out.parquet
Batch size: 10000
reply