MCPcopy Create free account
hub / github.com/f0rr0/oliphaunt / pg_dump_round_trip_plain_sql

Function pg_dump_round_trip_plain_sql

src/pglite/pg_dump.rs:732–831  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

730
731 #[tokio::test(flavor = "multi_thread", worker_threads = 2)]
732 async fn pg_dump_round_trip_plain_sql() -> Result<()> {
733 let server = PgliteServer::temporary_tcp()?;
734 let mut conn = sqlx::PgConnection::connect(&server.database_url())
735 .await
736 .context("connect to PGlite server")?;
737 conn.execute(
738 "CREATE TABLE dump_items(id INTEGER PRIMARY KEY, value TEXT);
739 CREATE INDEX dump_items_value_idx ON dump_items(value);
740 CREATE SEQUENCE dump_items_seq START WITH 10;
741 CREATE VIEW dump_item_values AS SELECT value FROM dump_items;
742 INSERT INTO dump_items(id, value) VALUES (1, 'alpha'), (2, 'beta');
743 SELECT nextval('dump_items_seq');",
744 )
745 .await
746 .context("seed pg_dump source data")?;
747 drop(conn);
748
749 let (server, dump) = tokio::task::spawn_blocking(move || -> Result<_> {
750 let dump = server.dump_sql(PgDumpOptions::default())?;
751 Ok((server, dump))
752 })
753 .await
754 .context("join pg_dump task")??;
755
756 assert!(dump.contains("PostgreSQL database dump"));
757 assert!(
758 dump.contains("CREATE TABLE public.dump_items"),
759 "dump did not contain dump_items table DDL:\n{dump}"
760 );
761 assert!(dump.contains("CREATE INDEX dump_items_value_idx"));
762 assert!(dump.contains("CREATE SEQUENCE public.dump_items_seq"));
763 assert!(dump.contains("CREATE VIEW public.dump_item_values"));
764 assert!(dump.contains("INSERT INTO"));
765
766 let (server, schema_only) = tokio::task::spawn_blocking(move || -> Result<_> {
767 let dump = server.dump_sql(PgDumpOptions::new().arg("--schema-only"))?;
768 Ok((server, dump))
769 })
770 .await
771 .context("join schema-only pg_dump task")??;
772 assert!(schema_only.contains("CREATE TABLE public.dump_items"));
773 assert!(
774 !schema_only.contains("INSERT INTO public.dump_items"),
775 "schema-only dump unexpectedly contained data:\n{schema_only}"
776 );
777
778 let (server, quoted) = tokio::task::spawn_blocking(move || -> Result<_> {
779 let dump = server.dump_sql(PgDumpOptions::new().arg("--quote-all-identifiers"))?;
780 Ok((server, dump))
781 })
782 .await
783 .context("join quoted pg_dump task")??;
784 assert!(quoted.contains("CREATE TABLE \"public\".\"dump_items\""));
785 assert!(quoted.contains("INSERT INTO \"public\".\"dump_items\""));
786
787 let mut usable = sqlx::PgConnection::connect(&server.database_url())
788 .await
789 .context("reconnect after pg_dump")?;

Callers

nothing calls this directly

Calls 10

database_urlMethod · 0.80
executeMethod · 0.80
argMethod · 0.80
execMethod · 0.80
dump_sqlMethod · 0.45
closeMethod · 0.45
shutdownMethod · 0.45
openMethod · 0.45
temporaryMethod · 0.45
queryMethod · 0.45

Tested by

no test coverage detected