Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
29b01f9
Update ExportCSVConfig to support generic CSV sources
davidwzhao Feb 17, 2026
ae4cac5
Update generated proto files
davidwzhao Feb 17, 2026
4e777d1
Update grammar
davidwzhao Feb 17, 2026
5ab4715
Try using Any types
davidwzhao Feb 17, 2026
da6d2a9
Add partition size to csv config
davidwzhao Feb 17, 2026
c44d462
Use separate options for legacy vs new csv export config
davidwzhao Feb 17, 2026
7d4b9a0
Update generated proto and parser
davidwzhao Feb 17, 2026
33073d1
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 18, 2026
dbf57a7
Update partition_size to partition_size_mb
davidwzhao Feb 18, 2026
1f53c82
Update grammar to distinguish between new and legacy ExportCSVConfig …
davidwzhao Feb 18, 2026
15b982d
Update pretty printer generator to support field unwrapping under con…
davidwzhao Feb 18, 2026
c2a838b
Update generated sdks
davidwzhao Feb 18, 2026
7d4bc26
Format
davidwzhao Feb 18, 2026
1e297f6
Add tests for export_csv_config_v2
davidwzhao Feb 18, 2026
18f2f69
Fix type error
davidwzhao Feb 18, 2026
0137a34
Update generated parser
davidwzhao Feb 18, 2026
7b125a9
Go back to having separate grammar rule for export_csv_columns
davidwzhao Feb 18, 2026
468d657
Update generated parsers and printers
davidwzhao Feb 18, 2026
028f7f9
Update Go pretty printer
davidwzhao Feb 18, 2026
6993438
Update pretty snapshots
davidwzhao Feb 18, 2026
150f48b
Add csv_export attr to test
davidwzhao Feb 18, 2026
7600ca0
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 19, 2026
bf6c9a2
No need for ignoring validator
davidwzhao Feb 19, 2026
8528f23
Update snaps
davidwzhao Feb 19, 2026
b5c3da9
Update go snaps
davidwzhao Feb 19, 2026
7fa4441
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 20, 2026
aa9ca13
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 22, 2026
9de602e
Update grammar
davidwzhao Feb 22, 2026
7aaddda
Fix grammar
davidwzhao Feb 22, 2026
5cf9906
Add debug snaps for export tests
davidwzhao Feb 22, 2026
7aa23eb
Add return type annotation
davidwzhao Feb 23, 2026
87e7bd5
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 24, 2026
8f71193
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 39 additions & 7 deletions meta/src/meta/grammar.y
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,10 @@
%nonterm exists logic.Exists
%nonterm export transactions.Export
%nonterm export_csv_column transactions.ExportCSVColumn
%nonterm export_csv_columns Sequence[transactions.ExportCSVColumn]
%nonterm export_csv_columns_list Sequence[transactions.ExportCSVColumn]
%nonterm export_csv_config transactions.ExportCSVConfig
%nonterm export_csv_path String
%nonterm export_csv_source transactions.ExportCSVSource
%nonterm false logic.Disjunction
%nonterm ffi logic.FFI
%nonterm ffi_args Sequence[logic.Abstraction]
Expand Down Expand Up @@ -176,6 +177,7 @@
%validator_ignore_completeness DecimalValue
%validator_ignore_completeness BeTreeLocator
%validator_ignore_completeness BeTreeConfig
%validator_ignore_completeness ExportCSVColumns

%%

Expand Down Expand Up @@ -1062,17 +1064,23 @@ export
deconstruct: $3: transactions.ExportCSVConfig = $$.csv_config

export_csv_config
: "(" "export_csv_config" export_csv_path export_csv_columns config_dict ")"
construct: $$ = export_csv_config($3, $4, $5)
deconstruct:
: "(" "export_csv_config_v2" export_csv_path export_csv_source csv_config ")"
construct: $$ = construct_export_csv_config_with_source($3, $4, $5)
deconstruct if builtin.length($$.data_columns) == 0:
$3: String = $$.path
$4: transactions.ExportCSVSource = $$.csv_source
$5: logic.CSVConfig = $$.csv_config
| "(" "export_csv_config" export_csv_path export_csv_columns_list config_dict ")"
construct: $$ = construct_export_csv_config($3, $4, $5)
deconstruct if builtin.length($$.data_columns) != 0:
$3: String = $$.path
$4: Sequence[transactions.ExportCSVColumn] = $$.data_columns
$5: Sequence[Tuple[String, logic.Value]] = deconstruct_export_csv_config($$)

export_csv_path
: "(" "path" STRING ")"

export_csv_columns
export_csv_columns_list
: "(" "columns" export_csv_column* ")"

export_csv_column
Expand All @@ -1082,6 +1090,16 @@ export_csv_column
$3: String = $$.column_name
$4: logic.RelationId = $$.column_data

export_csv_source
: "(" "gnf_columns" export_csv_column* ")"
construct: $$ = transactions.ExportCSVSource(gnf_columns=transactions.ExportCSVColumns(columns=$3))
deconstruct if builtin.has_proto_field($$, 'gnf_columns'):
$3: Sequence[transactions.ExportCSVColumn] = $$.gnf_columns.columns
| "(" "table_def" relation_id ")"
construct: $$ = transactions.ExportCSVSource(table_def=$3)
deconstruct if builtin.has_proto_field($$, 'table_def'):
$3: logic.RelationId = $$.table_def


%%

Expand Down Expand Up @@ -1181,6 +1199,7 @@ def construct_csv_config(config_dict: Sequence[Tuple[String, logic.Value]]) -> l
decimal_separator: str = _extract_value_string(builtin.dict_get(config, "csv_decimal_separator"), ".")
encoding: str = _extract_value_string(builtin.dict_get(config, "csv_encoding"), "utf-8")
compression: str = _extract_value_string(builtin.dict_get(config, "csv_compression"), "auto")
partition_size_mb: int = _extract_value_int64(builtin.dict_get(config, "csv_partition_size_mb"), 0)
return logic.CSVConfig(
header_row=header_row,
skip=skip,
Expand All @@ -1193,6 +1212,7 @@ def construct_csv_config(config_dict: Sequence[Tuple[String, logic.Value]]) -> l
decimal_separator=decimal_separator,
encoding=encoding,
compression=compression,
partition_size_mb=partition_size_mb,
)


Expand Down Expand Up @@ -1258,8 +1278,7 @@ def construct_configure(config_dict: Sequence[Tuple[String, logic.Value]]) -> tr
ivm_config=ivm_config,
)


def export_csv_config(
def construct_export_csv_config(
path: String,
columns: Sequence[transactions.ExportCSVColumn],
config_dict: Sequence[Tuple[String, logic.Value]],
Expand All @@ -1284,6 +1303,17 @@ def export_csv_config(
syntax_escapechar=builtin.some(syntax_escapechar),
)

def construct_export_csv_config_with_source(
path: String,
csv_source: transactions.ExportCSVSource,
csv_config: logic.CSVConfig,
) -> transactions.ExportCSVConfig:
return transactions.ExportCSVConfig(
path=path,
csv_source=csv_source,
csv_config=csv_config,
)


def _make_value_int32(v: Int32) -> logic.Value:
return logic.Value(int_value=builtin.int32_to_int64(v))
Expand Down Expand Up @@ -1345,6 +1375,8 @@ def deconstruct_csv_config(msg: logic.CSVConfig) -> List[Tuple[String, logic.Val
builtin.list_push(result, builtin.tuple("csv_decimal_separator", _make_value_string(msg.decimal_separator)))
builtin.list_push(result, builtin.tuple("csv_encoding", _make_value_string(msg.encoding)))
builtin.list_push(result, builtin.tuple("csv_compression", _make_value_string(msg.compression)))
if msg.partition_size_mb != 0:
builtin.list_push(result, builtin.tuple("csv_partition_size_mb", _make_value_int64(msg.partition_size_mb)))
return builtin.list_sort(result)


Expand Down
3 changes: 3 additions & 0 deletions proto/relationalai/lqp/v1/logic.proto
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,9 @@ message CSVConfig {

// Compression
string compression = 11; // "none", "gzip", "zstd", "auto" (default: "auto")

// Partitioning (for export)
int64 partition_size_mb = 12;
}

message CSVColumn {
Expand Down
14 changes: 14 additions & 0 deletions proto/relationalai/lqp/v1/transactions.proto
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ message ExportCSVConfig {
string path = 1;
repeated ExportCSVColumn data_columns = 2;

ExportCSVSource csv_source = 10;
CSVConfig csv_config = 11;

optional int64 partition_size = 3;
optional string compression = 4;
optional bool syntax_header_row = 5;
Expand All @@ -95,6 +98,17 @@ message ExportCSVColumn {
RelationId column_data = 2;
}

message ExportCSVColumns {
repeated ExportCSVColumn columns = 1;
}

message ExportCSVSource {
oneof csv_source {
ExportCSVColumns gnf_columns = 1;
RelationId table_def = 2;
}
}

//
// Read operations
//
Expand Down
Loading
Loading