Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
cta
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Harbor Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
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
Show more breadcrumbs
dCache
cta
Commits
f3fd5921
Commit
f3fd5921
authored
16 years ago
by
Giuseppe Lo Presti
Browse files
Options
Downloads
Patches
Plain Diff
Partial fix for bug #27304, stager_qry -s returns available free space as FREE.
Dropped unused code from fileNameStagerQuery
parent
185120b4
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
castor/db/oracleQuery.sql
+43
-32
43 additions, 32 deletions
castor/db/oracleQuery.sql
with
43 additions
and
32 deletions
castor/db/oracleQuery.sql
+
43
−
32
View file @
f3fd5921
/*******************************************************************
*
* @(#)$RCSfile: oracleQuery.sql,v $ $Revision: 1.65
2
$ $Date: 2009/0
1/22 07:18:55
$ $Author:
waldron
$
* @(#)$RCSfile: oracleQuery.sql,v $ $Revision: 1.65
3
$ $Date: 2009/0
2/09 18:46:33
$ $Author:
itglp
$
*
* PL/SQL code for the stager and resource monitoring
*
...
...
@@ -118,7 +118,7 @@ END;
/*
* PL/SQL method implementing the stager_qry based on file name
* PL/SQL method implementing the stager_qry based on file name
for directories
*/
CREATE
OR
REPLACE
PROCEDURE
fileNameStageQuery
(
fn
IN
VARCHAR2
,
...
...
@@ -131,34 +131,27 @@ BEGIN
SELECT
/*+ INDEX(DiskPool2SvcClass I_DiskPool2SvcClass_C) */
CastorFile
.
id
BULK
COLLECT
INTO
cfIds
FROM
DiskCopy
,
FileSystem
,
DiskPool2SvcClass
,
CastorFile
WHERE
CastorFile
.
lastKnownFileName
LIKE
fn
||
'%'
AND
DiskCopy
.
castorFile
=
CastorFile
.
id
AND
DiskCopy
.
fileSystem
=
FileSystem
.
id
AND
FileSystem
.
diskPool
=
DiskPool2SvcClass
.
parent
AND
(
DiskPool2SvcClass
.
child
=
svcClassId
OR
svcClassId
=
0
)
AND
ROWNUM
<=
maxNbResponses
+
1
;
ELSE
-- exact match
SELECT
/*+ INDEX(DiskPool2SvcClass I_DiskPool2SvcClass_C) */
CastorFile
.
id
BULK
COLLECT
INTO
cfIds
FROM
DiskCopy
,
FileSystem
,
DiskPool2SvcClass
,
CastorFile
WHERE
CastorFile
.
lastKnownFileName
=
canonicalizePath
(
fn
)
WHERE
CastorFile
.
lastKnownFileName
LIKE
normalizePath
(
fn
)
||
'%'
AND
DiskCopy
.
castorFile
=
CastorFile
.
id
AND
DiskCopy
.
fileSystem
=
FileSystem
.
id
AND
FileSystem
.
diskPool
=
DiskPool2SvcClass
.
parent
AND
(
DiskPool2SvcClass
.
child
=
svcClassId
OR
svcClassId
=
0
)
AND
ROWNUM
<=
maxNbResponses
+
1
;
-- ELSE exact match, not implemented here any longer but in fileIdStageQuery
END
IF
;
IF
cfIds
.
COUNT
>
maxNbResponses
THEN
-- We have too many rows, we just give up
raise_application_error
(
-
20102
,
'Too many matching files'
);
END
IF
;
internalStageQuery
(
cfIds
,
svcClassId
,
result
);
IF
cfIds
.
COUNT
>
0
THEN
internalStageQuery
(
cfIds
,
svcClassId
,
result
);
END
IF
;
END
;
/
/*
* PL/SQL method implementing the stager_qry based on file id
* PL/SQL method implementing the stager_qry based on file id
or single filename
*/
CREATE
OR
REPLACE
PROCEDURE
fileIdStageQuery
(
fid
IN
NUMBER
,
...
...
@@ -349,6 +342,22 @@ BEGIN
END
;
/
/* Internal function used by describeDiskPool[s] to return free available
* space, i.e. the free space on PRODUCTION status resources */
CREATE
OR
REPLACE
FUNCTION
getAvailFreeSpace
(
status
IN
NUMBER
,
freeSpace
IN
NUMBER
)
RETURN
NUMBER
IS
BEGIN
IF
status
>
0
THEN
-- anything but PRODUCTION == 0 means no space
RETURN
0
;
END
IF
;
IF
freeSpace
<
0
THEN
-- over used filesystems may report negative numbers, just cut to 0
RETURN
0
;
ELSE
RETURN
freeSpace
;
END
IF
;
END
;
/
/*
* PL/SQL method implementing the diskPoolQuery when listing pools
...
...
@@ -364,11 +373,10 @@ BEGIN
IF
svcClassName
IS
NULL
THEN
OPEN
result
FOR
SELECT
grouping
(
ds
.
name
)
AS
IsDSGrouped
,
grouping
(
fs
.
mountPoint
)
AS
IsFSGrouped
,
dp
.
name
,
ds
.
name
,
ds
.
status
,
fs
.
mountPoint
,
sum
(
decode
(
sign
(
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
),
-
1
,
0
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
))
AS
freeSpace
,
grouping
(
fs
.
mountPoint
)
AS
IsFSGrouped
,
dp
.
name
,
ds
.
name
,
ds
.
status
,
fs
.
mountPoint
,
sum
(
getAvailFreeSpace
(
fs
.
status
+
ds
.
status
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
))
AS
freeSpace
,
sum
(
fs
.
totalSize
),
fs
.
minFreeSpace
,
fs
.
maxFreeSpace
,
fs
.
status
FROM
FileSystem
fs
,
DiskServer
ds
,
DiskPool
dp
...
...
@@ -376,8 +384,8 @@ BEGIN
AND
ds
.
id
=
fs
.
diskServer
GROUP
BY
grouping
sets
(
(
dp
.
name
,
ds
.
name
,
ds
.
status
,
fs
.
mountPoint
,
decode
(
sign
(
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
),
-
1
,
0
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
),
getAvailFreeSpace
(
fs
.
status
+
ds
.
status
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
),
fs
.
totalSize
,
fs
.
minFreeSpace
,
fs
.
maxFreeSpace
,
fs
.
status
),
(
dp
.
name
,
ds
.
name
,
ds
.
status
),
...
...
@@ -388,10 +396,9 @@ BEGIN
OPEN
result
FOR
SELECT
grouping
(
ds
.
name
)
AS
IsDSGrouped
,
grouping
(
fs
.
mountPoint
)
AS
IsFSGrouped
,
dp
.
name
,
ds
.
name
,
ds
.
status
,
fs
.
mountPoint
,
sum
(
decode
(
sign
(
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
),
-
1
,
0
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
))
AS
freeSpace
,
dp
.
name
,
ds
.
name
,
ds
.
status
,
fs
.
mountPoint
,
sum
(
getAvailFreeSpace
(
fs
.
status
+
ds
.
status
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
))
AS
freeSpace
,
sum
(
fs
.
totalSize
),
fs
.
minFreeSpace
,
fs
.
maxFreeSpace
,
fs
.
status
FROM
FileSystem
fs
,
DiskServer
ds
,
DiskPool
dp
,
...
...
@@ -404,8 +411,8 @@ BEGIN
AND
ds
.
id
=
fs
.
diskServer
GROUP
BY
grouping
sets
(
(
dp
.
name
,
ds
.
name
,
ds
.
status
,
fs
.
mountPoint
,
decode
(
sign
(
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
),
-
1
,
0
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
),
getAvailFreeSpace
(
fs
.
status
+
ds
.
status
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
),
fs
.
totalSize
,
fs
.
minFreeSpace
,
fs
.
maxFreeSpace
,
fs
.
status
),
(
dp
.
name
,
ds
.
name
,
ds
.
status
),
...
...
@@ -446,7 +453,8 @@ BEGIN
SELECT
grouping
(
ds
.
name
)
AS
IsDSGrouped
,
grouping
(
fs
.
mountPoint
)
AS
IsGrouped
,
ds
.
name
,
ds
.
status
,
fs
.
mountPoint
,
sum
(
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
)
AS
freeSpace
,
sum
(
getAvailFreeSpace
(
fs
.
status
+
ds
.
status
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
))
AS
freeSpace
,
sum
(
fs
.
totalSize
),
fs
.
minFreeSpace
,
fs
.
maxFreeSpace
,
fs
.
status
FROM
FileSystem
fs
,
DiskServer
ds
,
DiskPool
dp
...
...
@@ -455,7 +463,8 @@ BEGIN
AND
dp
.
name
=
diskPoolName
GROUP
BY
grouping
sets
(
(
ds
.
name
,
ds
.
status
,
fs
.
mountPoint
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
,
getAvailFreeSpace
(
fs
.
status
+
ds
.
status
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
),
fs
.
totalSize
,
fs
.
minFreeSpace
,
fs
.
maxFreeSpace
,
fs
.
status
),
(
ds
.
name
,
ds
.
status
),
...
...
@@ -467,7 +476,8 @@ BEGIN
SELECT
grouping
(
ds
.
name
)
AS
IsDSGrouped
,
grouping
(
fs
.
mountPoint
)
AS
IsGrouped
,
ds
.
name
,
ds
.
status
,
fs
.
mountPoint
,
sum
(
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
)
AS
freeSpace
,
sum
(
getAvailFreeSpace
(
fs
.
status
+
ds
.
status
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
))
AS
freeSpace
,
sum
(
fs
.
totalSize
),
fs
.
minFreeSpace
,
fs
.
maxFreeSpace
,
fs
.
status
FROM
FileSystem
fs
,
DiskServer
ds
,
DiskPool
dp
,
...
...
@@ -480,7 +490,8 @@ BEGIN
AND
dp
.
name
=
diskPoolName
GROUP
BY
grouping
sets
(
(
ds
.
name
,
ds
.
status
,
fs
.
mountPoint
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
,
getAvailFreeSpace
(
fs
.
status
+
ds
.
status
,
fs
.
free
-
fs
.
minAllowedFreeSpace
*
fs
.
totalSize
),
fs
.
totalSize
,
fs
.
minFreeSpace
,
fs
.
maxFreeSpace
,
fs
.
status
),
(
ds
.
name
,
ds
.
status
),
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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