I am working with pl/r compiled for R.3.2.4 64 bit on PostgreSQL 9.5.1 64 bit on Windows 7 64 bit
At the end of this issue, I am getting the following error. https://github.com/postgres-plr/plr/issues/1 ERROR: could not open file "base/12373/2663": No such file or directory LINE 1: SELECT NULL FROM pg_catalog.pg_class WHERE relname = 'plr_mo... ^ QUERY: SELECT NULL FROM pg_catalog.pg_class WHERE relname = 'plr_modules' AND relnamespace = 2200 The error seems to be coming from SPI_exec. If I run this SQL manually from psql SELECT NULL FROM pg_catalog.pg_class WHERE relname = 'plr_modules' AND relnamespace = 2200 The result is returned and is correct. * The problem is not my hard disk. * I am running multiple versions of PostgreSQL on the same hard disk. * The following run fine. Regular Windows pre-compiled PostgreSQL 9.4.1 downladed from downloaded from postgresql.org Regular Windows pre-compiled PostgreSQL 9.5.1 downladed from downloaded from postgresql.org Regular Windows pre-compiled PostgreSQL 9.5.2 downladed from downloaded from postgresql.org THe problem is not security. I am gave 'Full Access' to Administators group , EveryOne group, and Users group to the directories containing all of the PostgreSQL directries containing both/either data and binaries. I have shutdown all virus software: AVG. The pl/r and plr.dll for R 3.1.2 64 bit runs fine on PostgreSQL 9.4.1 64bit on Windows 7 64 The pl/r source code has not changed at least since PostgreSQL 9.4.1. I have physically examined the pl/r source code. It seems relatively simple to understand. THe error seems to only come from here. https://raw.githubusercontent.com/jconway/plr/master/plr.c static bool haveModulesTable(Oid nspOid) { StringInfo sql = makeStringInfo(); char *sql_format = "SELECT NULL " "FROM pg_catalog.pg_class " "WHERE " "relname = 'plr_modules' AND " "relnamespace = %u"; int spiRc; appendStringInfo(sql, sql_format, nspOid); spiRc = SPI_exec(sql->data, 1); if (spiRc != SPI_OK_SELECT) /* internal error */ elog(ERROR, "haveModulesTable: select from pg_class failed"); return SPI_processed == 1; } I noticed that the using in the SPI_exec function *seems* to be similar in the source code. https://raw.githubusercontent.com/postgres/postgres/3aff33aa687e47d52f453892498b30ac98a296af/src/test/regress/regress.c query = (char *) palloc(100 + NAMEDATALEN * 3 + strlen(fieldval) + strlen(fieldtype)); sprintf(query, "insert into %s select * from %s where %s = '%s'::%s", SPI_getrelname(rel), SPI_getrelname(rel), SPI_fname(tupdesc, 1), fieldval, fieldtype); if ((ret = SPI_exec(query, 0)) < 0) elog(ERROR, "funny_dup17 (fired %s) on level %3d: SPI_exec (insert ...) returned %d", when, *level, ret); AND SPI_exec *seems* to be similar here https://raw.githubusercontent.com/postgres/postgres/8b99edefcab1e82c43139a2c7dc06d31fb27b3e4/src/backend/commands/matview.c StringInfoData querybuf; initStringInfo(&querybuf); /* Analyze the temp table with the new contents. */ appendStringInfo(&querybuf, "ANALYZE %s", tempname); if (SPI_exec(querybuf.data, 0) != SPI_OK_UTILITY) elog(ERROR, "SPI_exec failed: %s", querybuf.data); It is defined here. https://raw.githubusercontent.com/postgres/postgres/3aff33aa687e47d52f453892498b30ac98a296af/src/include/executor/spi.h extern int SPI_execute(const char *src, bool read_only, long tcount); https://raw.githubusercontent.com/postgres/postgres/39c283e498de1bb7c3d5beadfffcf3273ae8cc27/src/backend/executor/spi.c /* Parse, plan, and execute a query string */ int SPI_execute(const char *src, bool read_only, long tcount) { _SPI_plan plan; int res; if (src == NULL || tcount < 0) return SPI_ERROR_ARGUMENT; res = _SPI_begin_call(true); if (res < 0) return res; memset(&plan, 0, sizeof(_SPI_plan)); plan.magic = _SPI_PLAN_MAGIC; plan.cursor_options = 0; _SPI_prepare_oneshot_plan(src, &plan); res = _SPI_execute_plan(&plan, NULL, InvalidSnapshot, InvalidSnapshot, read_only, true, tcount); _SPI_end_call(true); return res; } /* Obsolete version of SPI_execute */ int SPI_exec(const char *src, long tcount) { return SPI_execute(src, false, tcount); } My Big question is the following, Has there been any change in the PostgreSQL IO code from 9.4.1. to 9.5.1 that may be possibly causing this problem ( in SPI_exec or elsewhere )? ERROR: could not open file "base/12373/2663": No such file or directory Any answers with any possibilities of any directions are welcome. Thank you, Andre Mikulec andre_miku...@hotmail.com