Marty's right in that dbservice is a bitmask and the intention is to
exclude star databases which has the flag of 0x00000001. However as
Pam's email implied we don't want to exclude the star co-ordinator
database - the ii* one which has a flag of 0x00000002. These two flags
happen to be mutually exclusive but there are other flags which are not.
For example:
$ createdb marty_ordinary
Creating database 'marty_ordinary' . . .
Creating DBMS System Catalogs . . .
Modifying DBMS System Catalogs . . .
Creating Standard Catalog Interface . . .
Creating Front-end System Catalogs . . .
Creation of database 'marty_ordinary' completed successfully.
$ createdb marty_star/star
Creating distributed database 'marty_star' . . .
Creating DBMS System Catalogs . . .
Modifying DBMS System Catalogs . . .
Creating Standard Catalog Interface . . .
Creating STAR System Catalogs . . .
Initializing STAR System Catalogs . . .
Modifying STAR System Catalogs . . .
Creating Front-end System Catalogs . . .
Creation of distributed database 'marty_star' successfully completed.
$ createdb -i marty_unistar/star
Creating distributed database 'marty_unistar' . . .
Creating DBMS System Catalogs . . .
Modifying DBMS System Catalogs . . .
Creating Standard Catalog Interface . . .
Creating STAR System Catalogs . . .
Initializing STAR System Catalogs . . .
Modifying STAR System Catalogs . . .
Creating Front-end System Catalogs . . .
Creation of distributed database 'marty_unistar' successfully completed.
$ sql iidbdb | cat
INGRES TERMINAL MONITOR Copyright 2008 Ingres Corporation
Ingres Linux Version II 9.2.3 (int.lnx/103)NPTL login
Thu Nov 4 10:13:58 2010
continue
* select name,dbservice,hex(dbservice) from iidatabase where name like
'%marty%'
Executing . . .
+--------------------------------+-------------+--------+
+--------------------------------+-------------+--------+
Quote:
marty_ordinary | 0|00000000|
marty_unistar | -2145386495|80200001|
iimarty_unistar | -2145386494|80200002|
iimarty_star | 2|00000002|
marty_star | 1|00000001| |
+--------------------------------+-------------+--------+
(5 rows)
continue
Of these database we want to return marty_ordinary, and the two
iimarty_* databases. These are the ones that might have tables we need
to check.
Marty's right that our original check returns the wrong rows:
* select name from iidatabase where name like '%marty%' and
mod(dbservice,256)!=1\g
Executing . . .
+--------------------------------+
+--------------------------------+
Quote:
marty_ordinary |
marty_unistar |
iimarty_unistar |
iimarty_star | |
+--------------------------------+
(4 rows)
Continue
We've included marty_unistar which we shouldn't have. Unfortunately
Marty's alternative doesn't work in this case either -
* select name,mod(dbservice,256) from iidatabase where name like
'%marty%' and mod(dbservice,256)!=1 \g
Executing . . .
+--------------------------------+------+
+--------------------------------+------+
Quote:
marty_ordinary | 0|
marty_unistar | -255|
iimarty_unistar | -254|
iimarty_star | 2| |
+--------------------------------+------+
(4 rows)
Continue
This is because one of the flags for Unicode-enabled makes the dbservice
appear negative when treated as an ordinary integer.
I'd suggest this:
* select name from iidatabase where name like '%marty%' and
abs(mod(dbservice,2))!=1\g
Executing . . .
+--------------------------------+
+--------------------------------+
Quote:
marty_ordinary |
iimarty_unistar |
iimarty_star | |
+--------------------------------+
(3 rows)
continue
Regards
Paul
From: info-ingres-bounces (AT) kettleriver...ting (DOT) com
[mailto:info-ingres-bounces (AT) kettleriverconsulting (DOT) com] On Behalf Of
Martin Bowes
Sent: 04 November 2010 09:30
To: Pamela Fowler
Cc: Ingres and related product discussion forum
Subject: Re: [Info-Ingres] Critical Ingres Database Announcement
Hi Pam,
The problem I have raised is in the query which identifies the databases
to act upon. The query is attempting to identifiy the star distributed
databases from both star co-ordinator databases and local databases. In
short you cannot rely on a simple check of 'dbservice != 1' as the
dbservice field is an integer with embedded meaning at certain bit
positions. The only reliable way to determine what the value of
dbservice means is to use mod() as I indicated in my earlier post.
So...
select blah, blah, blah
from iidatabase
where mod(dbservice, 256) != 1
/* Garuntees this is not a STAR distributed database: mod(dbservice,
256) = 1.
** It will be either a local database: mod(dbservice, 256) = 0
** or a STAR co-ordinator database: mod(dbservice, 256) = 2
*/
Marty
From: Pamela Fowler [mailto:Pamela.Fowler (AT) ingres (DOT) com]
Sent: 03 November 2010 17:12
To: Martin Bowes
Cc: Ingres and related product discussion forum
Subject: RE: Critical Ingres Database Announcement
Martin -
The team looked at this and they indicated we are handling START
databases correctly as follows:
When you create a STAR database (e.g. created star/star), then two
entries are added
into IIDBDB's iidatabase table [using my example]
1) "star" with a dbservice of 1 and
2) "iistar" with a dbservice of 2
When you connect to a STAR DB (sql star/star), if you create a table it
is physically added
to the "iistar" database. So the program ignores the "star" database but
does connect to the
"iistar" database and check for corrupt values. None of the system
catalogues in the STAR
database has a 'C' columntype.
Here's a simple test
createdb star/star
Creating distributed database 'star' . . .
Creating DBMS System Catalogs . . .
Modifying DBMS System Catalogs . . .
Creating Standard Catalog Interface . . .
Creating STAR System Catalogs . . .
Initializing STAR System Catalogs . . .
Modifying STAR System Catalogs . . .
Creating Front-end System Catalogs . . .
Creation of distributed database 'star' successfully completed.
sql star/star
create table nov_3 as select * from iitables\g
\q
sql iistar
* help\g
Executing . . .
Name Owner
Type
nov_3 ingres
table
(1 row)
Sincerely,
Pamela Fowler
VP of WW Support
Ingres Corporation
pamela.fowler (AT) ingres (DOT) com <mailto

amela.fowler (AT) ingres (DOT) com>
PHONE +1 708.478.5695
MOBILE +1 708.415.2875
VM +1 650.587.5590
FAX +1 708.478.5695
<http://www.ingres.com/vectorwise/>
This transmission is confidential and intended solely for the use of the
recipient named above. It may contain confidential, proprietary, or
legally privileged information. If you are not the intended recipient,
you are hereby notified that any unauthorized review, use, disclosure or
distribution is strictly prohibited. If you have received this
transmission in error, please contact the sender by reply e-mail and
delete the original transmission and all copies from your system.
From: Pamela Fowler
Sent: Tuesday, November 02, 2010 7:24 PM
To: 'Martin Bowes'
Cc: Ingres and related product discussion forum
Subject: RE: Critical Ingres Database Announcement
Martin -
Thanks for the feedback and you think you have thought of everything but
apparently not.
I am reviewing with the team so they at least have this on hand in case
someone calls.
Sincerely,
Pamela Fowler
VP of WW Support
Ingres Corporation
pamela.fowler (AT) ingres (DOT) com <mailto

amela.fowler (AT) ingres (DOT) com>
PHONE +1 708.478.5695
MOBILE +1 708.415.2875
VM +1 650.587.5590
FAX +1 708.478.5695
<http://www.ingres.com/vectorwise/>
This transmission is confidential and intended solely for the use of the
recipient named above. It may contain confidential, proprietary, or
legally privileged information. If you are not the intended recipient,
you are hereby notified that any unauthorized review, use, disclosure or
distribution is strictly prohibited. If you have received this
transmission in error, please contact the sender by reply e-mail and
delete the original transmission and all copies from your system.
From: Martin Bowes [mailto:martin.bowes (AT) ctsu (DOT) ox.ac.uk]
Sent: Tuesday, November 02, 2010 5:05 AM
To: Pamela Fowler
Cc: Ingres and related product discussion forum
Subject: RE: Critical Ingres Database Announcement
Hi Pam,
Thanks for that stuff...it's made for a fun morning.
FYI the script findcorrupt.sc. does not correctly allow for distributed
databases.
Change line 475.
From: dbservice != 1
To: mod(dbservice, 256) != 1
Martin Bowes
From: Pamela Fowler [mailto:Pamela.Fowler (AT) ingres (DOT) com]
Sent: 01 November 2010 18:29
To: Pamela Fowler
Subject: Critical Ingres Database Announcement
November 1, 2010
Dear Valued Ingres Customer:
A new issue has recently been identified in Ingres 9.2.0, 9.2.1, and
9.3.1, on all platforms. We view this issue as 'critical' and recommend
the available patches be applied as soon as possible.
Fixes are available for the current release of Ingres 9.2 and 9.3
versions on their respective platforms and can be downloaded at
http://esd.ingres.com. The fixes can be quickly applied with little to
no anticipated impact to systems.
Please review the attached for the details.
Sincerely,
Pamela Fowler
VP of WW Support
Ingres Corporation
pamela.fowler (AT) ingres (DOT) com <mailto

amela.fowler (AT) ingres (DOT) com>
PHONE +1 708.478.5695
MOBILE +1 708.415.2875
VM +1 650.587.5590
FAX +1 708.478.5695
<http://www.ingres.com/vectorwise/>
This transmission is confidential and intended solely for the use of the
recipient named above. It may contain confidential, proprietary, or
legally privileged information. If you are not the intended recipient,
you are hereby notified that any unauthorized review, use, disclosure or
distribution is strictly prohibited. If you have received this
transmission in error, please contact the sender by reply e-mail and
delete the original transmission and all copies from your system.