Thread: Dropping schemas and "illegal seek"
I have a perl test program which has about 80 test cases, each of which creates its own schema so I can remove them with DROP SCHEMA xxx CASCADE. Normally each test case creates and drops the same schema, but it can run a mode to preserve each schema and all the disk files for each test. I recently changed my cleanup code to run psql with all -c commands on one command line rather than a separate psql -c for each one ... psql -c 'DROP SCHEMA x1 CASCADE' psql -c 'DROP SCHEMA x2 CASCADE' ... changed to psql -c 'DROP SCHEMA x1 CASCADE' -c 'DROP SCHEMA x2 CASCADE' ... and began getting this complaint from psql: Can't drop schemas: Illegal seek But nothing in the server log. I have set log_min_messages = warning and maybe that accounts for it, but illegal seek sounds bad enough to be at least a warning. I changed it back to separate commands, and the illegal seek complant only shows up for the last one (which is dropped). I tried adding sleep 5 between each command, no difference. VACUUM ANALYZE doesn't clear it. I can recreate all 80 schema and delete them all and get the same message. Have I hosed this database? -- ... _._. ._ ._. . _._. ._. ___ .__ ._. . .__. ._ .. ._. Felix Finch: scarecrow repairman & rocket surgeon / felix@crowfix.com GPG = E987 4493 C860 246C 3B1E 6477 7838 76E9 182E 8151 ITAR license #4933 I've found a solution to Fermat's Last Theorem but I see I've run out of room o
Felix Finch <felix@crowfix.com> writes: > changed to > psql -c 'DROP SCHEMA x1 CASCADE' -c 'DROP SCHEMA x2 CASCADE' ... AFAICT psql will only execute the last -c string if you try to specify more than one on the command line, so the above is pretty hopeless anyway, but > and began getting this complaint from psql: > Can't drop schemas: Illegal seek I don't see this here. What platform is this on, and what PG version? > Have I hosed this database? AFAICT whatever this is is local to psql's command processing, so no your database isn't hosed. My guess is that the "Illegal seek" message is coming from trying to fseek stdin, but why it's trying to do that is impossible to guess without seeing the complete command line. Is "Can't drop schemas" coming from your script? I don't believe that such a message text appears anywhere in psql or the backend. regards, tom lane
>>In article <16576.58572.621445.840789@crowfix.com>, Felix Finch <felix@crowfix.com> writes: > I have a perl test program ... and began getting this complaint > from psql: > Can't drop schemas: Illegal seek Ahhh yesss... otherwise known as the subroutine not returning any specific value and the caller expecting an error code, which explains why adding debugging code changed it, running it under the debugger changed it, and just about everything I did changed it, on a random hit or miss basis. My apologies for being too quick on the draw :-( -- ... _._. ._ ._. . _._. ._. ___ .__ ._. . .__. ._ .. ._. Felix Finch: scarecrow repairman & rocket surgeon / felix@crowfix.com GPG = E987 4493 C860 246C 3B1E 6477 7838 76E9 182E 8151 ITAR license #4933 I've found a solution to Fermat's Last Theorem but I see I've run out of room o