|
7 | 7 | *
|
8 | 8 | *
|
9 | 9 | * IDENTIFICATION
|
10 |
| - * $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.27 1998/01/13 04:04:31 scrappy Exp $ |
| 10 | + * $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.28 1998/02/23 13:58:04 vadim Exp $ |
11 | 11 | *
|
12 | 12 | *-------------------------------------------------------------------------
|
13 | 13 | */
|
@@ -503,22 +503,35 @@ mdblindwrt(char *dbstr,
|
503 | 503 | sprintf(path,"%s/%s.%d",DataDir,relstr,segno);
|
504 | 504 | }
|
505 | 505 | /* user table? then put in user database area... */
|
506 |
| -else |
| 506 | +elseif (dbid==MyDatabaseId) |
507 | 507 | {
|
508 |
| -#ifFALSE |
509 |
| -path= (char*)palloc(strlen(DataDir)+strlen("/base/")+2*sizeof(NameData)+2+nchars); |
| 508 | +externchar*DatabasePath; |
| 509 | + |
| 510 | +path= (char*)palloc(strlen(DatabasePath)+2*sizeof(NameData)+2+nchars); |
510 | 511 | if (segno==0)
|
511 |
| -sprintf(path,"%s/base/%s/%s",DataDir, |
512 |
| -dbstr,relstr); |
| 512 | +sprintf(path,"%s%c%s",DatabasePath,SEP_CHAR,relstr); |
513 | 513 | else
|
514 |
| -sprintf(path,"%s/base/%s/%s.%d",DataDir,dbstr, |
515 |
| -relstr,segno); |
516 |
| -#endif |
517 |
| -path= (char*)palloc(strlen(GetDatabasePath())+2*sizeof(NameData)+2+nchars); |
| 514 | +sprintf(path,"%s%c%s.%d",DatabasePath,SEP_CHAR,relstr,segno); |
| 515 | +} |
| 516 | +else/* this is work arround only !!! */ |
| 517 | +{ |
| 518 | +chardbpath[MAXPGPATH+1]; |
| 519 | +Oidowner,id; |
| 520 | +char*tmpPath; |
| 521 | + |
| 522 | +GetRawDatabaseInfo(dbstr,&owner,&id,dbpath); |
| 523 | + |
| 524 | +if (id!=dbid) |
| 525 | +elog (FATAL,"mdblindwrt: oid of db %s is not %u",dbstr,dbid); |
| 526 | +tmpPath=ExpandDatabasePath(dbpath); |
| 527 | +if (tmpPath==NULL) |
| 528 | +elog (FATAL,"mdblindwrt: can't expand path for db %s",dbstr); |
| 529 | +path= (char*)palloc(strlen(tmpPath)+2*sizeof(NameData)+2+nchars); |
518 | 530 | if (segno==0)
|
519 |
| -sprintf(path,"%s%c%s",GetDatabasePath(),SEP_CHAR,relstr); |
| 531 | +sprintf(path,"%s%c%s",tmpPath,SEP_CHAR,relstr); |
520 | 532 | else
|
521 |
| -sprintf(path,"%s%c%s.%d",GetDatabasePath(),SEP_CHAR,relstr,segno); |
| 533 | +sprintf(path,"%s%c%s.%d",tmpPath,SEP_CHAR,relstr,segno); |
| 534 | +pfree (tmpPath); |
522 | 535 | }
|
523 | 536 |
|
524 | 537 | if ((fd=open(path,O_RDWR,0600))<0)
|
|