Bug #7449
unqualified _File buffer must target the first database in the connection list
100%
History
#2 Updated by Constantin Asofiei about 3 years ago
- Priority changed from Normal to High
In OpenEdge, when running from command line, like this:
pro -db c:\dbs\db1 -db c:\dbs\db2 -p fmeta.p
a testcases like this for
fmeta.p:message buffer _file:dbname ldbname(1) ldbname(2).
will always show
db1 db1 db2
This means that an unqualified _file buffer references always target the first database in the list.
- connected first
db1 - connected second
db2 - ran
fmeta.p
and in this case, it shows db2 db1 db2. I don't know why this happens. Is there another list of 'connected databases' in OpenEdge?
p2j.cfg.xmlschema configuration needs to match exactly thisprogress.gneeds to treat explicitly unqualified meta table names, and resolve them from the first connected database.
#3 Updated by Constantin Asofiei about 3 years ago
The assumptions in note #6129-28 and others, where it was found that the last connected database is used I think are wrong. In that example:
connect c:\p2j_test\p2j_test. do on stop undo, leave: run fmeta.p. end. disconnect p2j_test. connect c:\p2j_test\cdp. do on stop undo, leave: run fmeta.p. end. disconnect cdp. connect c:\p2j_test\aaa. do on stop undo, leave: run fmeta.p. end. disconnect aaa.
where
fmeta.p contains:message buffer _file:dbname.
you can't run the program without having the .r-code file compiled for fmeta.p.
And, at compile time, the _file buffer in fmeta.p will be hard-linked to the first database in the connection list used to start the COMPILE program, something like this:
mpro -db c:\p2j_test\cdp -db c:\p2j_test\p2j_test -db c:\p2j_test\aaa <program-to-compile-fmeta>.p
I may have missed to compile fmeta.p from the command line, and did it instead from the Procedure Editor, previously.
#4 Updated by Constantin Asofiei about 3 years ago
- % Done changed from 0 to 100
- Status changed from New to Review
- Assignee set to Constantin Asofiei
Created task branch 7449a from trunk rev 14630.
The changes are in 7449a rev 14631.
#5 Updated by Greg Shah about 3 years ago
Code Review Task Branch 7449a Revision 14631
No objections.
#6 Updated by Greg Shah about 3 years ago
You can rebase and merge to trunk.
#7 Updated by Constantin Asofiei about 3 years ago
- Status changed from Review to Test
Branch 7449a was merged to trunk rev 14632 and archived.
#8 Updated by Constantin Asofiei about 3 years ago
There is an unintended consequence to these changes. If in p2j.cfg.xml, the standard namespace is not explicitly defined as default="false", then this will be a 'default database' and will be the first one in the list (if the standard namespace is the first one).
Eric, is it OK to ensure that for the standard namespace by default the SchemaConfig$NsConfig.defDb is false?
#9 Updated by Eric Faulhaber about 3 years ago
Constantin Asofiei wrote:
Eric, is it OK to ensure that for the
standardnamespace by default theSchemaConfig$NsConfig.defDbisfalse?
Yes, that makes sense.
#10 Updated by Constantin Asofiei about 3 years ago
Eric Faulhaber wrote:
Constantin Asofiei wrote:
Eric, is it OK to ensure that for the
standardnamespace by default theSchemaConfig$NsConfig.defDbisfalse?Yes, that makes sense.
I've made the change in 7450a rev 14640.
#11 Updated by Alexandru Lungu about 3 years ago
- Related to Feature #7404: Trasform replace-mode into append-mode when target table is empty added
#12 Updated by Alexandru Lungu about 3 years ago
- Related to deleted (Feature #7404: Trasform replace-mode into append-mode when target table is empty)