mirror of
				https://github.com/iv-org/invidious.git
				synced 2025-10-27 03:08:31 -05:00 
			
		
		
		
	Unlike the other migrations, this one uses a bare table name to specify the table. This means it looks in the default search path. Unfortunately, the out of box search path is: 1. Schema with the same name as the user 2. Public Because of this, if a schema exists with the same name as the DB user, the playlist_videos table will get created in _that_ schema, rather than the public schema, and then the grant statement will fail with an error like below if check_table is enabled as it keeps trying to create the table but failing on the grant statement: ``` 2022-01-22 02:27:42 UTC [info] check_table: check_table: CREATE TABLE playlist_videos Unhandled exception: relation "public.playlist_videos" does not exist (PQ::PQError) from /usr/share/crystal/src/primitives.cr:266:3 in 'handle_error' from lib/pg/src/pq/connection.cr:184:9 in 'handle_async_frames' from lib/pg/src/pq/connection.cr:162:7 in 'read' from lib/pg/src/pq/query.cr:53:14 in 'exec_all' from lib/db/src/db/database.cr:126:9 in '__crystal_main' from /usr/share/crystal/src/crystal/main.cr:110:5 in 'main' from src/env/__libc_start_main.c:94:2 in 'libc_start_main_stage2' 2022-01-22 02:27:43 UTC [info] check_table: check_table: CREATE TABLE playlist_videos Unhandled exception: relation "public.playlist_videos" does not exist (PQ::PQError) from /usr/share/crystal/src/primitives.cr:266:3 in 'handle_error' from lib/pg/src/pq/connection.cr:184:9 in 'handle_async_frames' from lib/pg/src/pq/connection.cr:162:7 in 'read' from lib/pg/src/pq/query.cr:53:14 in 'exec_all' from lib/db/src/db/database.cr:126:9 in '__crystal_main' from /usr/share/crystal/src/crystal/main.cr:110:5 in 'main' from src/env/__libc_start_main.c:94:2 in 'libc_start_main_stage2' ```
		
			
				
	
	
		
			20 lines
		
	
	
		
			411 B
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			411 B
		
	
	
	
		
			SQL
		
	
	
	
	
	
| -- Table: public.playlist_videos
 | |
| 
 | |
| -- DROP TABLE public.playlist_videos;
 | |
| 
 | |
| CREATE TABLE IF NOT EXISTS public.playlist_videos
 | |
| (
 | |
|     title text,
 | |
|     id text,
 | |
|     author text,
 | |
|     ucid text,
 | |
|     length_seconds integer,
 | |
|     published timestamptz,
 | |
|     plid text references playlists(id),
 | |
|     index int8,
 | |
|     live_now boolean,
 | |
|     PRIMARY KEY (index,plid)
 | |
| );
 | |
| 
 | |
| GRANT ALL ON TABLE public.playlist_videos TO current_user;
 |