Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
H
htm
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
OmegaCEN
htm
Commits
bb58b383
Commit
bb58b383
authored
21 years ago
by
Kor Begeman
Browse files
Options
Downloads
Patches
Plain Diff
Oracle-htm interface routines
parent
ec6b58a9
Branches
Branches containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
oracle/ohtm.cpp
+467
-0
467 additions, 0 deletions
oracle/ohtm.cpp
oracle/ohtm_wrap.c
+72
-0
72 additions, 0 deletions
oracle/ohtm_wrap.c
with
539 additions
and
0 deletions
oracle/ohtm.cpp
0 → 100644
+
467
−
0
View file @
bb58b383
#include
<iostream>
#include
<stdlib.h>
#include
<stdio.h>
#include
<string.h>
#define _INC_IOSTREAM
#include
"htm.h"
/* OCI stuff */
#include
<ociextp.h>
#define setup_OCI( arg ) Setup_OCI( arg, &envhp, &errhp, &svchp )
extern
unsigned
long
long
lookup
(
int
,
double
,
double
);
extern
int
get_depth
(
unsigned
long
long
);
extern
htm_list
get_nearest_indices
(
unsigned
long
long
,
int
);
extern
htm_list
get_circle_indices
(
int
,
int
,
int
,
double
,
double
,
double
);
extern
double
get_distance
(
double
ra1
,
double
dec1
,
double
ra2
,
double
dec2
);
extern
"C"
{
void
checkerr
(
OCIError
*
,
sword
);
void
Setup_OCI
(
OCIExtProcContext
*
ctx
,
OCIEnv
**
,
OCIError
**
,
OCISvcCtx
**
);
}
static
OCIError
*
errhp
=
(
OCIError
*
)
0
;
/* error handle */
static
OCIEnv
*
envhp
=
(
OCIEnv
*
)
0
;
static
OCISvcCtx
*
svchp
=
(
OCISvcCtx
*
)
0
;
#include
<sys/time.h>
extern
"C"
{
OCITable
*
JunkTable
(
OCIExtProcContext
*
);
}
static
unsigned
long
long
b_time
[
8
];
static
unsigned
long
long
t_time
[
8
];
static
unsigned
long
long
c_count
[
8
];
OCITable
*
JunkTable
(
OCIExtProcContext
*
ctx
)
{
setup_OCI
(
ctx
);
OCITable
*
r
=
(
OCITable
*
)
0
;
static
OCIType
*
htm_list_tdo
=
(
OCIType
*
)
0
;
sword
q
;
if
(
htm_list_tdo
==
(
OCIType
*
)
0
)
{
q
=
OCITypeByName
(
envhp
,
errhp
,
svchp
,
(
CONST
text
*
)
""
,
(
ub4
)
strlen
(
""
),
(
const
text
*
)
"HTM_LIST"
,
(
ub4
)
strlen
((
const
char
*
)
"HTM_LIST"
),
(
CONST
text
*
)
0
,
(
ub4
)
0
,
OCI_DURATION_SESSION
,
OCI_TYPEGET_ALL
,
&
htm_list_tdo
);
checkerr
(
errhp
,
q
);
}
q
=
OCIObjectNew
(
envhp
,
errhp
,
svchp
,
OCI_TYPECODE_NAMEDCOLLECTION
,
htm_list_tdo
,
(
dvoid
*
)
0
,
OCI_DURATION_DEFAULT
,
TRUE
,
(
dvoid
**
)
&
r
);
checkerr
(
errhp
,
q
);
int
k
;
for
(
k
=
0
;
k
<
8
;
k
++
)
{
OCINumber
Dummy
;
double
dt
=
(
double
)
t_time
[
k
]
/
1000000.0
;
q
=
OCINumberFromReal
(
errhp
,
&
dt
,
sizeof
(
dt
),
&
Dummy
);
checkerr
(
errhp
,
q
);
q
=
OCICollAppend
(
envhp
,
errhp
,
&
Dummy
,
(
dvoid
*
)
0
,
r
);
checkerr
(
errhp
,
q
);
unsigned
long
long
c
=
c_count
[
k
];
q
=
OCINumberFromInt
(
errhp
,
&
c
,
sizeof
(
c
),
OCI_NUMBER_UNSIGNED
,
&
Dummy
);
checkerr
(
errhp
,
q
);
q
=
OCICollAppend
(
envhp
,
errhp
,
&
Dummy
,
(
dvoid
*
)
0
,
r
);
checkerr
(
errhp
,
q
);
t_time
[
k
]
=
0
;
c_count
[
k
]
=
0
;
}
return
r
;
}
static
void
Timing
(
int
mode
)
{
static
struct
timeval
time
;
if
(
mode
>
0
)
{
gettimeofday
(
&
time
,
NULL
);
b_time
[
mode
-
1
]
=
(
unsigned
long
long
)
time
.
tv_sec
*
1000000
+
(
unsigned
long
long
)
time
.
tv_usec
;
}
else
{
gettimeofday
(
&
time
,
NULL
);
t_time
[
-
mode
-
1
]
+=
(
unsigned
long
long
)
time
.
tv_sec
*
1000000
+
(
unsigned
long
long
)
time
.
tv_usec
-
b_time
[
-
mode
-
1
];
c_count
[
-
mode
-
1
]
+=
1
;
}
}
static
OCINumber
Lookup_R
;
extern
"C"
{
OCINumber
*
Lookup
(
OCIExtProcContext
*
,
int
,
double
,
double
);
};
OCINumber
*
Lookup
(
OCIExtProcContext
*
ctx
,
int
depth
,
double
ra
,
double
dec
)
{
setup_OCI
(
ctx
);
sword
q
;
OCINumber
*
r
=
&
Lookup_R
;
unsigned
long
long
id
;
id
=
lookup
(
depth
,
ra
,
dec
);
q
=
OCINumberFromInt
(
errhp
,
&
id
,
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
r
);
checkerr
(
errhp
,
q
);
return
r
;
}
extern
"C"
{
int
Depth
(
OCIExtProcContext
*
,
OCINumber
*
);
};
int
Depth
(
OCIExtProcContext
*
ctx
,
OCINumber
*
h
)
{
setup_OCI
(
ctx
);
sword
q
;
unsigned
long
long
l
;
q
=
OCINumberToInt
(
errhp
,
h
,
sizeof
(
l
),
OCI_NUMBER_SIGNED
,
&
l
);
checkerr
(
errhp
,
q
);
return
get_depth
(
l
);
}
static
OCINumber
*
Neighbours_R
=
NULL
;
static
int
Neighbours_S
=
0
;
extern
"C"
{
OCITable
*
Neighbours2
(
OCIExtProcContext
*
,
OCINumber
*
,
int
);
};
OCITable
*
Neighbours2
(
OCIExtProcContext
*
ctx
,
OCINumber
*
OCI_id
,
int
depth
)
{
Timing
(
1
);
setup_OCI
(
ctx
);
static
OCITable
*
r
;
unsigned
long
long
id
;
htm_list
l
;
sword
q
;
q
=
OCINumberToInt
(
errhp
,
OCI_id
,
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
&
id
);
checkerr
(
errhp
,
q
);
l
=
get_nearest_indices
(
id
,
depth
);
if
(
l
.
n
>
Neighbours_S
)
{
Neighbours_R
=
(
OCINumber
*
)
realloc
(
Neighbours_R
,
l
.
n
*
sizeof
(
OCINumber
)
);
Neighbours_S
=
l
.
n
;
}
int
i
;
for
(
i
=
0
;
i
<
l
.
n
;
i
++
)
{
OCINumber
Dummy
;
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
i
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
&
Dummy
);
checkerr
(
errhp
,
q
);
q
=
OCICollAppend
(
envhp
,
errhp
,
&
Dummy
,
(
dvoid
*
)
0
,
r
);
checkerr
(
errhp
,
q
);
int
S
;
q
=
OCICollSize
(
envhp
,
errhp
,
r
,
(
sb4
*
)
&
S
);
FILE
*
p
=
fopen
(
"/tmp/prutje"
,
"w+"
);
fprintf
(
p
,
"S = %d
\n
"
,
S
);
fclose
(
p
);
}
Timing
(
-
1
);
return
r
;
}
extern
"C"
{
OCITable
*
NeighboursTest
(
OCIExtProcContext
*
,
OCINumber
*
,
int
,
int
);
};
OCITable
*
NeighboursTest
(
OCIExtProcContext
*
ctx
,
OCINumber
*
OCI_id
,
int
in_depth
,
int
out_depth
)
{
Timing
(
2
);
setup_OCI
(
ctx
);
OCITable
*
r
=
(
OCITable
*
)
0
;
static
OCIType
*
htm_list_tdo
=
(
OCIType
*
)
0
;
unsigned
long
long
id
;
htm_list
l
;
sword
q
;
if
(
htm_list_tdo
==
(
OCIType
*
)
0
)
{
q
=
OCITypeByName
(
envhp
,
errhp
,
svchp
,
(
CONST
text
*
)
""
,
(
ub4
)
strlen
(
""
),
(
const
text
*
)
"HTM_LIST"
,
(
ub4
)
strlen
((
const
char
*
)
"HTM_LIST"
),
(
CONST
text
*
)
0
,
(
ub4
)
0
,
OCI_DURATION_SESSION
,
OCI_TYPEGET_ALL
,
&
htm_list_tdo
);
checkerr
(
errhp
,
q
);
}
q
=
OCIObjectNew
(
envhp
,
errhp
,
svchp
,
OCI_TYPECODE_NAMEDCOLLECTION
,
htm_list_tdo
,
(
dvoid
*
)
0
,
OCI_DURATION_DEFAULT
,
TRUE
,
(
dvoid
**
)
&
r
);
checkerr
(
errhp
,
q
);
q
=
OCINumberToInt
(
errhp
,
OCI_id
,
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
&
id
);
checkerr
(
errhp
,
q
);
while
(
in_depth
>
out_depth
)
{
id
=
id
/
4
;
in_depth
--
;
}
Timing
(
3
);
l
=
get_nearest_indices
(
id
,
out_depth
);
Timing
(
-
3
);
int
i
;
for
(
i
=
0
;
i
<
l
.
n
;
i
++
)
{
OCINumber
Dummy
;
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
i
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
&
Dummy
);
checkerr
(
errhp
,
q
);
q
=
OCICollAppend
(
envhp
,
errhp
,
&
Dummy
,
(
dvoid
*
)
0
,
r
);
checkerr
(
errhp
,
q
);
}
Timing
(
-
2
);
return
r
;
}
extern
"C"
{
int
DistanceTest
(
OCIExtProcContext
*
,
int
,
double
,
double
,
double
,
double
,
double
);
}
int
DistanceTest
(
OCIExtProcContext
*
ctx
,
int
depth
,
double
ra1
,
double
dec1
,
double
ra2
,
double
dec2
,
double
radius
)
{
Timing
(
3
);
setup_OCI
(
ctx
);
static
double
save_ra1
=
0.0
,
save_dec1
=
0.0
;
static
double
save_ra2
=
0.0
,
save_dec2
=
0.0
,
save_radius
=
0.0
;
static
int
save_depth
=
0
;
static
unsigned
long
long
save_id
=
0
;
static
unsigned
long
long
*
ids
=
NULL
;
static
int
nids
=
0
;
static
int
size_ids
=
0
;
FILE
*
test
=
fopen
(
"/tmp/distancetest"
,
"a"
);
if
(
save_depth
!=
depth
||
save_ra1
!=
ra1
||
save_dec1
!=
dec1
)
{
save_id
=
lookup
(
depth
,
ra1
,
dec1
);
save_ra1
=
ra1
;
save_dec1
=
dec1
;
save_depth
=
depth
;
if
(
test
!=
NULL
)
{
fprintf
(
test
,
"ra1 = %12.8f dec1 = %12.8f
\n
"
,
ra1
,
dec1
);
}
}
if
(
save_depth
!=
depth
||
save_ra2
!=
ra2
||
save_dec2
!=
dec2
||
save_radius
!=
radius
)
{
htm_list
l
=
get_circle_indices
(
depth
,
depth
,
1
,
ra2
,
dec2
,
radius
);
save_radius
=
radius
;
save_ra2
=
ra2
;
save_dec2
=
dec2
;
if
(
l
.
n
>
size_ids
)
{
size_ids
=
l
.
n
;
ids
=
(
unsigned
long
long
*
)
realloc
(
ids
,
sizeof
(
unsigned
long
long
)
*
size_ids
);
}
nids
=
0
;
for
(
;
nids
<
l
.
n
;
nids
++
)
{
ids
[
nids
]
=
l
.
idx
[
nids
];
}
if
(
test
!=
NULL
)
{
fprintf
(
test
,
"ra2 = %12.8f dec2 = %12.8f
\n
"
,
ra2
,
dec2
);
}
}
int
k
;
int
r
=
0
;
for
(
k
=
0
;
k
<
nids
&&
!
r
;
k
++
)
{
if
(
save_id
==
ids
[
k
]
)
r
=
1
;
}
#if 1
if
(
r
)
{
if
(
get_distance
(
ra1
,
dec1
,
ra2
,
dec2
)
>
radius
)
r
=
0
;
}
if
(
test
!=
NULL
)
{
fprintf
(
test
,
"r = %d
\n
"
,
r
);
fclose
(
test
);
}
#endif
Timing
(
-
3
);
return
r
;
}
extern
"C"
{
OCITable
*
RadiusTest
(
OCIExtProcContext
*
,
int
,
double
,
double
,
double
);
};
OCITable
*
RadiusTest
(
OCIExtProcContext
*
ctx
,
int
depth
,
double
ra
,
double
dec
,
double
radius
)
{
Timing
(
4
);
setup_OCI
(
ctx
);
OCITable
*
r
=
(
OCITable
*
)
0
;
static
OCIType
*
htm_list_tdo
=
(
OCIType
*
)
0
;
htm_list
l
;
sword
q
;
if
(
htm_list_tdo
==
(
OCIType
*
)
0
)
{
q
=
OCITypeByName
(
envhp
,
errhp
,
svchp
,
(
CONST
text
*
)
""
,
(
ub4
)
strlen
(
""
),
(
const
text
*
)
"HTM_LIST"
,
(
ub4
)
strlen
((
const
char
*
)
"HTM_LIST"
),
(
CONST
text
*
)
0
,
(
ub4
)
0
,
OCI_DURATION_SESSION
,
OCI_TYPEGET_ALL
,
&
htm_list_tdo
);
checkerr
(
errhp
,
q
);
}
q
=
OCIObjectNew
(
envhp
,
errhp
,
svchp
,
OCI_TYPECODE_NAMEDCOLLECTION
,
htm_list_tdo
,
(
dvoid
*
)
0
,
OCI_DURATION_DEFAULT
,
TRUE
,
(
dvoid
**
)
&
r
);
checkerr
(
errhp
,
q
);
Timing
(
5
);
l
=
get_circle_indices
(
depth
,
depth
,
1
,
ra
,
dec
,
radius
);
Timing
(
-
5
);
int
i
;
for
(
i
=
0
;
i
<
l
.
n
;
i
++
)
{
unsigned
long
long
id
;
OCINumber
Dummy
;
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
i
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
&
Dummy
);
checkerr
(
errhp
,
q
);
q
=
OCICollAppend
(
envhp
,
errhp
,
&
Dummy
,
(
dvoid
*
)
0
,
r
);
checkerr
(
errhp
,
q
);
}
Timing
(
-
4
);
return
r
;
}
extern
"C"
{
int
NeighBours
(
OCIExtProcContext
*
,
OCINumber
*
,
int
,
OCINumber
*
,
OCINumber
*
,
OCINumber
*
,
OCINumber
*
,
OCINumber
*
,
OCINumber
*
,
OCINumber
*
,
OCINumber
*
,
OCINumber
*
,
OCINumber
*
,
OCINumber
*
,
OCINumber
*
,
OCINumber
*
);
};
int
NeighBours
(
OCIExtProcContext
*
ctx
,
OCINumber
*
OCI_id
,
int
depth
,
OCINumber
*
h01
,
OCINumber
*
h02
,
OCINumber
*
h03
,
OCINumber
*
h04
,
OCINumber
*
h05
,
OCINumber
*
h06
,
OCINumber
*
h07
,
OCINumber
*
h08
,
OCINumber
*
h09
,
OCINumber
*
h10
,
OCINumber
*
h11
,
OCINumber
*
h12
,
OCINumber
*
h13
)
{
Timing
(
6
);
setup_OCI
(
ctx
);
unsigned
long
long
id
;
htm_list
l
;
sword
q
;
q
=
OCINumberToInt
(
errhp
,
OCI_id
,
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
&
id
);
checkerr
(
errhp
,
q
);
Timing
(
7
);
l
=
get_nearest_indices
(
id
,
depth
);
Timing
(
-
7
);
if
(
l
.
n
!=
13
)
{
return
l
.
n
;
}
int
r
=
13
;
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
0
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
h01
);
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
1
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
h02
);
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
2
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
h03
);
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
3
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
h04
);
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
4
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
h05
);
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
5
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
h06
);
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
6
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
h07
);
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
7
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
h08
);
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
8
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
h09
);
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
9
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
h10
);
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
10
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
h11
);
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
11
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
h12
);
q
=
OCINumberFromInt
(
errhp
,
&
l
.
idx
[
12
],
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
h13
);
Timing
(
-
6
);
return
r
;
}
extern
"C"
{
OCITable
*
DummyTest
(
OCIExtProcContext
*
,
OCINumber
*
,
int
);
};
OCITable
*
DummyTest
(
OCIExtProcContext
*
ctx
,
OCINumber
*
OCI_id
,
int
depth
)
{
Timing
(
8
);
setup_OCI
(
ctx
);
OCITable
*
r
=
(
OCITable
*
)
0
;
static
OCIType
*
htm_list_tdo
=
(
OCIType
*
)
0
;
unsigned
long
long
id
;
sword
q
;
if
(
htm_list_tdo
==
(
OCIType
*
)
0
)
{
q
=
OCITypeByName
(
envhp
,
errhp
,
svchp
,
(
CONST
text
*
)
""
,
(
ub4
)
strlen
(
""
),
(
const
text
*
)
"HTM_LIST"
,
(
ub4
)
strlen
((
const
char
*
)
"HTM_LIST"
),
(
CONST
text
*
)
0
,
(
ub4
)
0
,
OCI_DURATION_SESSION
,
OCI_TYPEGET_ALL
,
&
htm_list_tdo
);
checkerr
(
errhp
,
q
);
}
q
=
OCIObjectNew
(
envhp
,
errhp
,
svchp
,
OCI_TYPECODE_NAMEDCOLLECTION
,
htm_list_tdo
,
(
dvoid
*
)
0
,
OCI_DURATION_DEFAULT
,
TRUE
,
(
dvoid
**
)
&
r
);
checkerr
(
errhp
,
q
);
q
=
OCINumberToInt
(
errhp
,
OCI_id
,
sizeof
(
id
),
OCI_NUMBER_UNSIGNED
,
&
id
);
checkerr
(
errhp
,
q
);
// l = get_nearest_indices( id, depth );
int
i
;
for
(
i
=
0
;
i
<
13
;
i
++
)
{
OCINumber
Dummy
;
unsigned
long
long
idx
=
id
+
i
;
q
=
OCINumberFromInt
(
errhp
,
&
idx
,
sizeof
(
idx
),
OCI_NUMBER_UNSIGNED
,
&
Dummy
);
checkerr
(
errhp
,
q
);
q
=
OCICollAppend
(
envhp
,
errhp
,
&
Dummy
,
(
dvoid
*
)
0
,
r
);
checkerr
(
errhp
,
q
);
}
Timing
(
-
8
);
return
r
;
}
extern
"C"
{
double
SecDistance
(
double
,
double
,
double
,
double
);
}
double
SecDistance
(
double
ra1
,
double
dec1
,
double
ra2
,
double
dec2
)
{
Timing
(
1
);
double
r
=
3600.0
*
get_distance
(
ra1
,
dec1
,
ra2
,
dec2
);
Timing
(
-
1
);
return
r
;
}
This diff is collapsed.
Click to expand it.
oracle/ohtm_wrap.c
0 → 100644
+
72
−
0
View file @
bb58b383
#include
<stdlib.h>
#include
<stdio.h>
#include
<string.h>
/* OCI stuff */
#include
<ociextp.h>
extern
void
checkerr
(
OCIError
*
errhp
,
sword
status
)
{
text
errbuf
[
512
];
ub4
buflen
;
sb4
errcode
;
if
(
status
==
OCI_SUCCESS
)
return
;
switch
(
status
)
{
case
OCI_SUCCESS_WITH_INFO
:
{
fprintf
(
stderr
,
"Error - OCI_SUCCESS_WITH_INFO
\n
"
);
break
;
}
case
OCI_NEED_DATA
:
{
fprintf
(
stderr
,
"Error - OCI_NEED_DATA
\n
"
);
break
;
}
case
OCI_NO_DATA
:
{
fprintf
(
stderr
,
"Error - OCI_NO_DATA
\n
"
);
break
;
}
case
OCI_ERROR
:
{
OCIErrorGet
((
dvoid
*
)
errhp
,
(
ub4
)
1
,
(
text
*
)
NULL
,
&
errcode
,
errbuf
,
(
ub4
)
sizeof
(
errbuf
),
(
ub4
)
OCI_HTYPE_ERROR
);
fprintf
(
stderr
,
"Error - %s
\n
"
,
errbuf
);
exit
(
1
);
break
;
}
case
OCI_INVALID_HANDLE
:
{
fprintf
(
stderr
,
"Error - OCI_INVALID_HANDLE
\n
"
);
break
;
}
case
OCI_STILL_EXECUTING
:
{
fprintf
(
stderr
,
"Error - OCI_STILL_EXECUTE"
);
break
;
}
case
OCI_CONTINUE
:
{
fprintf
(
stderr
,
"Error - OCI_CONTINUE"
);
break
;
}
default:
{
fprintf
(
stderr
,
"Error - %d
\n
"
,
status
);
break
;
}
}
}
static
int
setup_count
=
0
;
extern
void
Setup_OCI
(
OCIExtProcContext
*
ctx
,
OCIEnv
**
envhp
,
OCIError
**
errhp
,
OCISvcCtx
**
svchp
)
{
if
(
*
envhp
==
(
OCIEnv
*
)
0
||
*
errhp
==
(
OCIError
*
)
0
||
*
svchp
==
(
OCISvcCtx
*
)
0
)
{
sword
q
=
OCIExtProcGetEnv
(
ctx
,
envhp
,
svchp
,
errhp
);
/* Set up OCI */
checkerr
(
*
errhp
,
q
);
setup_count
++
;
};
}
extern
int
setuptest
(
)
{
return
setup_count
;
}
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment