mirror of
https://github.com/neondatabase/neon.git
synced 2026-05-26 01:20:38 +00:00
## Problem Spun off from https://github.com/neondatabase/neon/pull/6394 -- this PR is just the persistence parts and the changes that enable it to work nicely ## Summary of changes - Revert #6444 and #6450 - In neon_local, start a vanilla postgres instance for the attachment service to use. - Adopt `diesel` crate for database access in attachment service. This uses raw SQL migrations as the source of truth for the schema, so it's a soft dependency: we can switch libraries pretty easily. - Rewrite persistence.rs to use postgres (via diesel) instead of JSON. - Preserve JSON read+write at startup and shutdown: this enables using the JSON format in compatibility tests, so that we don't have to commit to our DB schema yet. - In neon_local, run database creation + migrations before starting attachment service - Run the initial reconciliation in Service::spawn in the background, so that the pageserver + attachment service don't get stuck waiting for each other to start, when restarting both together in a test.
28 lines
700 B
Rust
28 lines
700 B
Rust
// @generated automatically by Diesel CLI.
|
|
|
|
diesel::table! {
|
|
nodes (node_id) {
|
|
node_id -> Int8,
|
|
scheduling_policy -> Varchar,
|
|
listen_http_addr -> Varchar,
|
|
listen_http_port -> Int4,
|
|
listen_pg_addr -> Varchar,
|
|
listen_pg_port -> Int4,
|
|
}
|
|
}
|
|
|
|
diesel::table! {
|
|
tenant_shards (tenant_id, shard_number, shard_count) {
|
|
tenant_id -> Varchar,
|
|
shard_number -> Int4,
|
|
shard_count -> Int4,
|
|
shard_stripe_size -> Int4,
|
|
generation -> Int4,
|
|
generation_pageserver -> Int8,
|
|
placement_policy -> Varchar,
|
|
config -> Text,
|
|
}
|
|
}
|
|
|
|
diesel::allow_tables_to_appear_in_same_query!(nodes, tenant_shards,);
|