Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
12 changes: 6 additions & 6 deletions .github/workflows/MainDistributionPipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,17 @@ concurrency:
jobs:
duckdb-stable-build:
name: Build extension binaries
uses: duckdb/extension-ci-tools/.github/workflows/_extension_distribution.yml@v1.5-variegata
uses: duckdb/extension-ci-tools/.github/workflows/_extension_distribution.yml@v2.0-cyanoptera
with:
duckdb_version: v1.5.6
ci_tools_version: v1.5-variegata
duckdb_version: v2.0.0
ci_tools_version: v2.0-cyanoptera
extension_name: duck_diff

code-quality-check:
name: Code Quality Check
uses: duckdb/extension-ci-tools/.github/workflows/_extension_code_quality.yml@v1.5-variegata
uses: duckdb/extension-ci-tools/.github/workflows/_extension_code_quality.yml@v2.0-cyanoptera
with:
duckdb_version: v1.5.6
ci_tools_version: v1.5-variegata
duckdb_version: v2.0.0
ci_tools_version: v2.0-cyanoptera
extension_name: duck_diff
format_checks: 'format;tidy'
8 changes: 4 additions & 4 deletions .github/workflows/Release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,16 @@ permissions:
contents: write

env:
DUCKDB_VERSION: v1.5.6
DUCKDB_VERSION: v2.0.0
EXTENSION_NAME: duck_diff

jobs:
build:
name: Build extension binaries
uses: duckdb/extension-ci-tools/.github/workflows/_extension_distribution.yml@v1.5-variegata
uses: duckdb/extension-ci-tools/.github/workflows/_extension_distribution.yml@v2.0-cyanoptera
with:
duckdb_version: v1.5.6
ci_tools_version: v1.5-variegata
duckdb_version: v2.0.0
ci_tools_version: v2.0-cyanoptera
extension_name: duck_diff
exclude_archs: 'wasm_mvp;wasm_eh;wasm_threads'

Expand Down
2 changes: 1 addition & 1 deletion RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,6 @@ Also included:

### Housekeeping

- Upgraded the bundled DuckDB to v1.5.6.
- Upgraded the bundled DuckDB to v2.0.0 (extension-ci-tools `v2.0-cyanoptera`).
- `duck_diff` is now installable from the DuckDB community extension
repository: `INSTALL duck_diff FROM community;`
2 changes: 1 addition & 1 deletion duckdb
Submodule duckdb updated 12232 files
2 changes: 1 addition & 1 deletion extension-ci-tools
Submodule extension-ci-tools updated 44 files
+103 −6 .github/workflows/TestCITools.yml
+3 −3 .github/workflows/_extension_client_tests.yml
+10 −8 .github/workflows/_extension_code_quality.yml
+42 −26 .github/workflows/_extension_deploy.yml
+341 −812 .github/workflows/_extension_distribution.yml
+76 −0 .github/workflows/_submodule_version.yml
+746 −0 .github/workflows/build.yml
+146 −0 .github/workflows/deploy.yml
+2 −0 .gitignore
+95 −24 README.md
+10 −7 config/distribution_matrix.json
+20 −1 docker/linux_amd64/Dockerfile
+1 −1 docker/linux_amd64_musl/Dockerfile
+20 −1 docker/linux_arm64/Dockerfile
+1 −1 docker/linux_arm64_musl/Dockerfile
+52 −31 makefiles/duckdb_extension.Makefile
+7 −2 makefiles/vcpkg.Makefile
+1,047 −0 scripts/ci_phase.py
+167 −0 scripts/deploy_artifacts.py
+2 −0 scripts/extbuild/.gitignore
+21 −0 scripts/extbuild/Makefile
+34 −0 scripts/extbuild/README.md
+48 −0 scripts/extbuild/cmd/extbuild/github_event.go
+141 −0 scripts/extbuild/cmd/extbuild/github_event_test.go
+147 −0 scripts/extbuild/cmd/extbuild/logging.go
+13 −0 scripts/extbuild/cmd/extbuild/main.go
+114 −0 scripts/extbuild/cmd/extbuild/matrix.go
+411 −0 scripts/extbuild/cmd/extbuild/matrix_test.go
+17 −0 scripts/extbuild/cmd/extbuild/root.go
+16 −0 scripts/extbuild/go.mod
+18 −0 scripts/extbuild/go.sum
+146 −0 scripts/extbuild/internal/distmatrix/config_test.go
+352 −0 scripts/extbuild/internal/distmatrix/matrix.go
+102 −0 scripts/extbuild/internal/distmatrix/matrix_test.go
+101 −0 scripts/extbuild/internal/distmatrix/output.go
+12 −0 scripts/extbuild/testdata/github/events/extension_template_pull_request.json
+8 −0 scripts/extbuild/testdata/github/events/extension_template_push.json
+6 −0 scripts/extbuild/testdata/github/events/extension_template_unknown.json
+15 −4 scripts/modify_distribution_matrix.py
+1,233 −0 scripts/test_ci_phase.py
+211 −0 scripts/test_deploy_artifacts.py
+11 −0 toolchains/arm64-windows-static-release-clangcl.cmake
+34 −0 toolchains/scripts/clangcl.cmake
+11 −0 toolchains/x64-windows-static-release-clangcl.cmake
32 changes: 18 additions & 14 deletions src/duck_diff_extension.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ RelationSchema InspectRelation(ClientContext &context, optional_ptr<Binder> pare
// The argument is a query, written as the caller would in SQL: a `FROM …`
// clause or a full `SELECT … FROM …`. (A bare relation name is not a
// statement and is rejected — write `FROM tbl`.)
Parser parser(context.GetParserOptions());
Parser parser(context);
try {
parser.ParseQuery(relation);
} catch (const std::exception &e) {
Expand All @@ -102,7 +102,9 @@ RelationSchema InspectRelation(ClientContext &context, optional_ptr<Binder> pare
RelationSchema schema;
try {
auto bound = binder->Bind(*parser.statements[0]);
schema.names = bound.names;
for (auto &name : bound.names) {
schema.names.push_back(name.GetIdentifierName());
}
schema.types = bound.types;
} catch (const std::exception &e) {
throw BinderException("table_diff: could not resolve the %s relation (%s): %s", side, relation, e.what());
Expand Down Expand Up @@ -147,7 +149,7 @@ struct DiffPlan {

// Look up a named parameter, returning nullptr if absent.
const Value *FindParam(TableFunctionBindInput &input, const string &name) {
auto it = input.named_parameters.find(name);
auto it = input.named_parameters.find(Identifier(name));
if (it == input.named_parameters.end() || it->second.IsNull()) {
return nullptr;
}
Expand Down Expand Up @@ -567,7 +569,7 @@ string BuildDiffSQL(const DiffPlan &plan, const string &status_col, const string
}

unique_ptr<TableRef> ParseSubquery(ClientContext &context, const string &sql) {
Parser parser(context.GetParserOptions());
Parser parser(context);
parser.ParseQuery(sql);
if (parser.statements.size() != 1 || parser.statements[0]->type != StatementType::SELECT_STATEMENT) {
throw InternalException("table_diff: generated query was not a single SELECT statement");
Expand Down Expand Up @@ -704,16 +706,18 @@ unique_ptr<TableRef> SchemaDiffBindReplace(ClientContext &context, TableFunction
//===--------------------------------------------------------------------===//

void AddDiffParameters(TableFunction &fun) {
fun.named_parameters["pk"] = LogicalType::ANY; // string or list
fun.named_parameters["require_matching_columns"] = LogicalType::BOOLEAN;
fun.named_parameters["upcast_types"] = LogicalType::BOOLEAN;
fun.named_parameters["columns"] = LogicalType::LIST(LogicalType::VARCHAR);
fun.named_parameters["ignore"] = LogicalType::LIST(LogicalType::VARCHAR);
fun.named_parameters["numeric_tolerance"] = LogicalType::DOUBLE;
fun.named_parameters["timestamp_precision"] = LogicalType::VARCHAR;
fun.named_parameters["null_equals_empty"] = LogicalType::BOOLEAN;
fun.named_parameters["prefix"] = LogicalType::VARCHAR;
fun.named_parameters["context"] = LogicalType::LIST(LogicalType::VARCHAR);
// All optional: a NULL default reads as "not passed" (see FindParam).
auto &sig = fun.GetSignature();
sig.AddKeywordOnly("pk", LogicalType::ANY, Value()); // string or list
sig.AddKeywordOnly("require_matching_columns", LogicalType::BOOLEAN, Value());
sig.AddKeywordOnly("upcast_types", LogicalType::BOOLEAN, Value());
sig.AddKeywordOnly("columns", LogicalType::LIST(LogicalType::VARCHAR), Value());
sig.AddKeywordOnly("ignore", LogicalType::LIST(LogicalType::VARCHAR), Value());
sig.AddKeywordOnly("numeric_tolerance", LogicalType::DOUBLE, Value());
sig.AddKeywordOnly("timestamp_precision", LogicalType::VARCHAR, Value());
sig.AddKeywordOnly("null_equals_empty", LogicalType::BOOLEAN, Value());
sig.AddKeywordOnly("prefix", LogicalType::VARCHAR, Value());
sig.AddKeywordOnly("context", LogicalType::LIST(LogicalType::VARCHAR), Value());
}

void LoadInternal(ExtensionLoader &loader) {
Expand Down
Loading