11use helper:: { ensure, ensure_eq, ensure_matches, ensure_ok} ;
22
3- use bindings:: fermyon :: spin2_0_0 :: { postgres, rdbms_types } ;
3+ use bindings:: spin :: postgres :: postgres;
44
55helper:: define_component!( Component ) ;
66const DB_URL_ENV : & str = "DB_URL" ;
@@ -21,15 +21,19 @@ impl Component {
2121
2222 let rowset = ensure_ok ! ( numeric_types( & conn) ) ;
2323 ensure ! ( rowset. rows. iter( ) . all( |r| r. len( ) == 12 ) ) ;
24- ensure_matches ! ( rowset. rows[ 0 ] [ 11 ] , rdbms_types :: DbValue :: Floating64 ( f) if f == 1.0 ) ;
24+ ensure_matches ! ( rowset. rows[ 0 ] [ 11 ] , postgres :: DbValue :: Floating64 ( f) if f == 1.0 ) ;
2525
2626 let rowset = ensure_ok ! ( character_types( & conn) ) ;
2727 ensure ! ( rowset. rows. iter( ) . all( |r| r. len( ) == 3 ) ) ;
28- ensure ! ( matches!( rowset. rows[ 0 ] [ 0 ] , rdbms_types:: DbValue :: Str ( ref s) if s == "rvarchar" ) ) ;
28+ ensure ! ( matches!( rowset. rows[ 0 ] [ 0 ] , postgres:: DbValue :: Str ( ref s) if s == "rvarchar" ) ) ;
29+
30+ let rowset = ensure_ok ! ( date_time_types( & conn) ) ;
31+ ensure ! ( rowset. rows. iter( ) . all( |r| r. len( ) == 3 ) ) ;
32+ ensure_matches ! ( rowset. rows[ 0 ] [ 0 ] , postgres:: DbValue :: Date ( ( y, m, d) ) if y == 2525 && m == 12 && d == 25 ) ;
2933
3034 let rowset = ensure_ok ! ( nullable( & conn) ) ;
3135 ensure ! ( rowset. rows. iter( ) . all( |r| r. len( ) == 1 ) ) ;
32- ensure ! ( matches!( rowset. rows[ 0 ] [ 0 ] , rdbms_types :: DbValue :: DbNull ) ) ;
36+ ensure ! ( matches!( rowset. rows[ 0 ] [ 0 ] , postgres :: DbValue :: DbNull ) ) ;
3337
3438 let pid1 = format ! ( "{:?}" , ensure_ok!( pg_backend_pid( & conn) ) ) ;
3539 let pid2 = format ! ( "{:?}" , ensure_ok!( pg_backend_pid( & conn) ) ) ;
@@ -117,6 +121,37 @@ fn character_types(conn: &postgres::Connection) -> Result<postgres::RowSet, post
117121 conn. query ( sql, & [ ] )
118122}
119123
124+ fn date_time_types ( conn : & postgres:: Connection ) -> Result < postgres:: RowSet , postgres:: Error > {
125+ let create_table_sql = r#"
126+ CREATE TEMPORARY TABLE test_date_time_types (
127+ rdate date NOT NULL,
128+ rtime time NOT NULL,
129+ rtimestamp timestamp NOT NULL
130+ );
131+ "# ;
132+
133+ conn. execute ( create_table_sql, & [ ] ) ?;
134+
135+ let insert_sql = r#"
136+ INSERT INTO test_date_time_types
137+ (rdate, rtime, rtimestamp)
138+ VALUES
139+ (date '2525-12-25', time '04:05:06.789', timestamp '1989-11-24 01:02:03');
140+ "# ;
141+
142+ conn. execute ( insert_sql, & [ ] ) ?;
143+
144+ let sql = r#"
145+ SELECT
146+ rdate,
147+ rtime,
148+ rtimestamp
149+ FROM test_date_time_types;
150+ "# ;
151+
152+ conn. query ( sql, & [ ] )
153+ }
154+
120155fn nullable ( conn : & postgres:: Connection ) -> Result < postgres:: RowSet , postgres:: Error > {
121156 let create_table_sql = r#"
122157 CREATE TEMPORARY TABLE test_nullable (
@@ -133,7 +168,7 @@ fn nullable(conn: &postgres::Connection) -> Result<postgres::RowSet, postgres::E
133168 ($1);
134169 "# ;
135170
136- conn. execute ( insert_sql, & [ rdbms_types :: ParameterValue :: DbNull ] ) ?;
171+ conn. execute ( insert_sql, & [ postgres :: ParameterValue :: DbNull ] ) ?;
137172
138173 let sql = r#"
139174 SELECT
@@ -144,7 +179,7 @@ fn nullable(conn: &postgres::Connection) -> Result<postgres::RowSet, postgres::E
144179 conn. query ( sql, & [ ] )
145180}
146181
147- fn pg_backend_pid ( conn : & postgres:: Connection ) -> Result < rdbms_types :: DbValue , postgres:: Error > {
182+ fn pg_backend_pid ( conn : & postgres:: Connection ) -> Result < postgres :: DbValue , postgres:: Error > {
148183 let sql = "SELECT pg_backend_pid()" ;
149184
150185 let rowset = conn. query ( sql, & [ ] ) ?;
0 commit comments